{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "gv6nx80K4QNK"
      },
      "source": [
        "import numpy as np\n",
        "import pandas as pd \n",
        "from keras.preprocessing.image import ImageDataGenerator, load_img\n",
        "from keras.utils import to_categorical\n",
        "from sklearn.model_selection import train_test_split\n",
        "import matplotlib.pyplot as plt\n",
        "import random\n",
        "import os"
      ],
      "execution_count": 65,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iT0un9wb7QEb"
      },
      "source": [
        "Define constants"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XcFGFv2o7N1u"
      },
      "source": [
        "FAST_RUN = False\n",
        "IMAGE_WIDTH=128\n",
        "IMAGE_HEIGHT=128\n",
        "IMAGE_SIZE=(IMAGE_WIDTH, IMAGE_HEIGHT)\n",
        "IMAGE_CHANNELS=3"
      ],
      "execution_count": 66,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JtsAalz-7TmB"
      },
      "source": [
        "Prepare data"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s_iDUIM77Vk4"
      },
      "source": [
        "Download data and save it"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_05v3CbN7RpR"
      },
      "source": [
        "url = 'https://drive.google.com/file/d/1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5/view?usp=sharing'"
      ],
      "execution_count": 67,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fp1FQpyd7jwo",
        "outputId": "93beafed-7fe9-46e7-fc54-68555fbe131c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "!gdown --id 1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5"
      ],
      "execution_count": 68,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Downloading...\n",
            "From: https://drive.google.com/uc?id=1gjbSZV5NjjIVOqSP-yTCqXcGPX9PnYn5\n",
            "To: /content/MM17-WeiboRumorSet.zip\n",
            "1.35GB [00:20, 65.3MB/s]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hYPHGO1E7uh6"
      },
      "source": [
        "Unzip and save into folder train_extracted"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rhviYA0i7spi"
      },
      "source": [
        "import zipfile\n",
        "with zipfile.ZipFile(\"MM17-WeiboRumorSet.zip\",\"r\") as zip_ref:\n",
        "    zip_ref.extractall(\"./train_extracted\")"
      ],
      "execution_count": 69,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pWLQXyRB74iI"
      },
      "source": [
        "Exract labels from image names and save image names with corresponding labels in dataframe"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Pk6D3XmT72dg"
      },
      "source": [
        "filenames1 = os.listdir(\"./train_extracted/MM17-WeiboRumorSet/rumor_images\")\n",
        "filenames01 = []\n",
        "categories1 = []\n",
        "for filename in filenames1:\n",
        "    category = 1 # rumor\n",
        "    categories1.append(1)\n",
        "    s = \"rumor_images/\"+str(filename)\n",
        "    filenames01.append(s)\n",
        "\n",
        "df1 = pd.DataFrame({\n",
        "    'filename': filenames01,\n",
        "    'category': categories1\n",
        "})"
      ],
      "execution_count": 70,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bHnbciSU8dYZ",
        "outputId": "73eb3442-c2ae-46bf-8226-512d6b84cb60",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df1.head()"
      ],
      "execution_count": 71,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/0062SQMfjw1er5h3sjsduj30go0b4mxy.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/48d702e4jw1eaemtw7ltzj20zk0e8dme.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>rumor_images/0067agZ4jw1es9cldrayrj308l064mx3.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>rumor_images/71d4be65gw1eee2e0hca7j20oc0f741e.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/005C3vAljw1ep6zsunu6pj30gd0m8ab5.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/0062SQMfjw1er5h3sjsduj30go0b4mxy.jpg         1\n",
              "1  rumor_images/48d702e4jw1eaemtw7ltzj20zk0e8dme.jpg         1\n",
              "2  rumor_images/0067agZ4jw1es9cldrayrj308l064mx3.jpg         1\n",
              "3  rumor_images/71d4be65gw1eee2e0hca7j20oc0f741e.jpg         1\n",
              "4  rumor_images/005C3vAljw1ep6zsunu6pj30gd0m8ab5.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 71
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "q9PJWG2A87dJ",
        "outputId": "6a9bb6d9-d1c5-4796-e1cd-7aa84af8156c",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df1) # number of rumor images"
      ],
      "execution_count": 72,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "7954"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 72
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s3x7rXsP8ebo"
      },
      "source": [
        "filenames2 = os.listdir(\"./train_extracted/MM17-WeiboRumorSet/nonrumor_images\")\n",
        "filenames02 = []\n",
        "categories2 = []\n",
        "for filename in filenames2:\n",
        "    category2 = 0 # rumor\n",
        "    categories2.append(0)\n",
        "    s = \"nonrumor_images/\"+str(filename)\n",
        "    filenames02.append(s)\n",
        "\n",
        "df2 = pd.DataFrame({\n",
        "    'filename': filenames02,\n",
        "    'category': categories2\n",
        "})"
      ],
      "execution_count": 73,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9SWw95p98wPA",
        "outputId": "502a8848-7dc2-4694-b477-36a4916fbcb6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df2.head()"
      ],
      "execution_count": 74,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>nonrumor_images/593bbc68gw1eyu8xr22qwj20c80qog...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>nonrumor_images/6a5ce645jw1ezu74jn618j20c8096a...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/61e6c012jw1ezfi3q48epj20c8282w...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/6a5ce645jw1ezefna2nokj20bv0ctd...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>nonrumor_images/61e6c012jw1ezjxnp33f0j20c80he4...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  nonrumor_images/593bbc68gw1eyu8xr22qwj20c80qog...         0\n",
              "1  nonrumor_images/6a5ce645jw1ezu74jn618j20c8096a...         0\n",
              "2  nonrumor_images/61e6c012jw1ezfi3q48epj20c8282w...         0\n",
              "3  nonrumor_images/6a5ce645jw1ezefna2nokj20bv0ctd...         0\n",
              "4  nonrumor_images/61e6c012jw1ezjxnp33f0j20c80he4...         0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 74
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7d2VfS1D89Yr",
        "outputId": "a90d19ca-6da5-476f-b2af-9c7d98ad2239",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df2) # number of non rumor images"
      ],
      "execution_count": 75,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "5318"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 75
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uZ42s8Ro_6Va"
      },
      "source": [
        "df = df1.append(df2, ignore_index=True).reset_index(drop = True)"
      ],
      "execution_count": 76,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_fIUquAhAZB-",
        "outputId": "649607bc-68bc-49b4-d49d-cc7711726f9c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 77,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>rumor_images/0062SQMfjw1er5h3sjsduj30go0b4mxy.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>rumor_images/48d702e4jw1eaemtw7ltzj20zk0e8dme.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>rumor_images/0067agZ4jw1es9cldrayrj308l064mx3.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>rumor_images/71d4be65gw1eee2e0hca7j20oc0f741e.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/005C3vAljw1ep6zsunu6pj30gd0m8ab5.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  rumor_images/0062SQMfjw1er5h3sjsduj30go0b4mxy.jpg         1\n",
              "1  rumor_images/48d702e4jw1eaemtw7ltzj20zk0e8dme.jpg         1\n",
              "2  rumor_images/0067agZ4jw1es9cldrayrj308l064mx3.jpg         1\n",
              "3  rumor_images/71d4be65gw1eee2e0hca7j20oc0f741e.jpg         1\n",
              "4  rumor_images/005C3vAljw1ep6zsunu6pj30gd0m8ab5.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 77
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2pH2wtpWAZ--",
        "outputId": "89fc73a1-ae78-4944-c078-5fb7d522fadd",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "len(df) # combined"
      ],
      "execution_count": 78,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "13272"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 78
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1-FVPif5AbDG",
        "outputId": "c8193692-60eb-48eb-c567-6e5d2d432822",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 296
        }
      },
      "source": [
        "df.describe()"
      ],
      "execution_count": 79,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>13272.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>0.599307</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>0.490057</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "           category\n",
              "count  13272.000000\n",
              "mean       0.599307\n",
              "std        0.490057\n",
              "min        0.000000\n",
              "25%        0.000000\n",
              "50%        1.000000\n",
              "75%        1.000000\n",
              "max        1.000000"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 79
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xEICoXREAe7W",
        "outputId": "2bf39366-99b2-4677-d369-b6c98c93ea03",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.tail()"
      ],
      "execution_count": 80,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>13267</th>\n",
              "      <td>nonrumor_images/66eeadffjw1eynry1ltilj20go0m8d...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13268</th>\n",
              "      <td>nonrumor_images/6a5ce645jw1ezefndxpnnj20c50bwg...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13269</th>\n",
              "      <td>nonrumor_images/470bf257jw1eue540s1zuj20hr0e6j...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13270</th>\n",
              "      <td>nonrumor_images/6693ce84gw1ez0r8sv77oj20c836zh...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13271</th>\n",
              "      <td>nonrumor_images/625ab309jw1eyhkiz1jmkj20bl0gnm...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "13267  nonrumor_images/66eeadffjw1eynry1ltilj20go0m8d...         0\n",
              "13268  nonrumor_images/6a5ce645jw1ezefndxpnnj20c50bwg...         0\n",
              "13269  nonrumor_images/470bf257jw1eue540s1zuj20hr0e6j...         0\n",
              "13270  nonrumor_images/6693ce84gw1ez0r8sv77oj20c836zh...         0\n",
              "13271  nonrumor_images/625ab309jw1eyhkiz1jmkj20bl0gnm...         0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 80
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Pm3W4A0BBFex"
      },
      "source": [
        "Total count"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nwsJEYNoAnad",
        "outputId": "231e009e-12be-4bdd-dbbe-5c71958394aa",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "label_counts = df.groupby('category').size()\n",
        "print(label_counts)"
      ],
      "execution_count": 81,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "category\n",
            "0    5318\n",
            "1    7954\n",
            "dtype: int64\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Hr5bn68EA5zF",
        "outputId": "b730060a-c927-4335-848b-49e8552eb27d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 82,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fbf2b7cba58>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 82
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "B8SOMjuFBIZC"
      },
      "source": [
        "Sample image"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Zu95Vqf5ICnG"
      },
      "source": [
        "Shuffle df"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "tOkhf8xkIEQm"
      },
      "source": [
        "# shuffle the DataFrame rows \n",
        "df = df.sample(frac = 1).reset_index(drop=True) "
      ],
      "execution_count": 83,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Wz6egnsyIO6G",
        "outputId": "a50e7445-e50b-4de6-aaa9-8505c5575613",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 84,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>nonrumor_images/63207a53jw1ezu5w9vmm1j20c809a3...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>nonrumor_images/620beb06gw1eznhqaixltj20c80c8a...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/0065vuzcjw1exnnp4raypj30c80c8j...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/470bf257gw1ev900k7h0jj20gj0gkq...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/93dad53fjw1es81zh6g87j20f00qojsk.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  nonrumor_images/63207a53jw1ezu5w9vmm1j20c809a3...         0\n",
              "1  nonrumor_images/620beb06gw1eznhqaixltj20c80c8a...         0\n",
              "2  nonrumor_images/0065vuzcjw1exnnp4raypj30c80c8j...         0\n",
              "3  nonrumor_images/470bf257gw1ev900k7h0jj20gj0gkq...         0\n",
              "4  rumor_images/93dad53fjw1es81zh6g87j20f00qojsk.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 84
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "T4QGsffWIUje",
        "outputId": "9e62f281-9f86-4e8e-f825-e77d17bcd7e5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.tail()"
      ],
      "execution_count": 85,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>13267</th>\n",
              "      <td>rumor_images/9dcceeefjw1es88yu8gwmj20xc18gtht.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13268</th>\n",
              "      <td>rumor_images/8c30bcc9jw1ep6cjbj89pj20p018g0yx.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13269</th>\n",
              "      <td>rumor_images/6d8450b9jw1e0lc9tl1m5j.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13270</th>\n",
              "      <td>nonrumor_images/6693ce84gw1eyyykr9wcbj20c80lst...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13271</th>\n",
              "      <td>rumor_images/006arIsYjw1ev14i3xwwmj30hs0vk0vh.jpg</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "13267  rumor_images/9dcceeefjw1es88yu8gwmj20xc18gtht.jpg         1\n",
              "13268  rumor_images/8c30bcc9jw1ep6cjbj89pj20p018g0yx.jpg         1\n",
              "13269            rumor_images/6d8450b9jw1e0lc9tl1m5j.jpg         1\n",
              "13270  nonrumor_images/6693ce84gw1eyyykr9wcbj20c80lst...         0\n",
              "13271  rumor_images/006arIsYjw1ev14i3xwwmj30hs0vk0vh.jpg         1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 85
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "X28HYdciIS-O"
      },
      "source": [
        ""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RkVovi9qDrBp"
      },
      "source": [
        "Make a combined list with rumor and non rumor image paths last part"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QpX-qX_yGWgx",
        "outputId": "8d16b399-011e-4091-c112-54ac70eaa3db",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "filenames = []\n",
        "categories = []\n",
        "for i in range(0, len(df)):\n",
        "  filenames.append(str(df['filename'][i]))\n",
        "  categories.append((df['category'][i]))\n",
        "print(len(filenames))\n",
        "print(len(categories))"
      ],
      "execution_count": 86,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "13272\n",
            "13272\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DQT75R37DViw",
        "outputId": "52985b74-70a2-44d0-9fa2-590de110fc69",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(filenames[0])\n",
        "print(categories[0])\n",
        "print(filenames[-1])\n",
        "print(categories[-1])"
      ],
      "execution_count": 87,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "nonrumor_images/63207a53jw1ezu5w9vmm1j20c809a3zk.jpg\n",
            "0\n",
            "rumor_images/006arIsYjw1ev14i3xwwmj30hs0vk0vh.jpg\n",
            "1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TNMAZ1nfCzsl",
        "outputId": "4f4cf5e7-faa1-4a77-d92d-2e79fb6d1ed4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 304
        }
      },
      "source": [
        "sample = random.choice(filenames)\n",
        "print(sample)\n",
        "image = load_img(\"./train_extracted/MM17-WeiboRumorSet/\"+sample)\n",
        "plt.imshow(image)"
      ],
      "execution_count": 88,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "rumor_images/005YPqw6jw1etv8znodozj30et0m8ac4.jpg\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x7fbf90569c18>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 88
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAALkAAAD8CAYAAAArOAWDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9SaxkyZWm9x2zO/jsb34vXryIyGRGMjOZLLI41NTV3ejWALQaDbVWgloLNQQBtZGgrXohQFoK0E6AIKAWglobCb1TQyigWfPEGshKFslK5hQRmTG8ePFGn93vZGZamF13f8EcqOoiOopIS3iG+3X36/7sHjv2n/8/57g45/h8fD5+lof6d/0FPh+fj5/2+NzIPx8/8+NzI/98/MyPz4388/EzPz438s/Hz/z43Mg/Hz/z46di5CLyj0TkPRG5JyL/4qfxGZ+Pz8dPOuRvmicXEQ28D/yHwBPgO8A/c8796G/0gz4fn4+fcPw0PPkvAveccw+ccwXwfwP/9KfwOZ+Pz8dPNKKfwjlvAo/XHj8Bfun5F4nIrwG/BpAk6Tf29m8AAghO6nsADsQ/EhwOQRw4rD+MLF/rRFjtSwoRh6vfXj8h+HMAOBeeCGcQEBwiEp5bDQcgenkiCScNZ7r2Af5bhu+0fJ7wyCGo+i9ZPSPgnCxfU3+f8MHhNf5sdv0MzoYz+feIn5y1T3T+GT9ZyHMbt1v+f/VdhI95zdrB+krU91evWt13H/M651z4s8LxtWvy3Bf67BHmpp6i+/ffv3DO7X7cS38aRv4TDefcrwO/DnDr9hfcf/vf/89onaJUShk1EZcRlwVYh0oirOpCBGLnaFOiyhytSsRotICJHEIKqkkVpYiOyF1JpEqsbaGcxYld7l3aCcaCsg4lUCkhIsJh0ZREpiB2FUIJuonT4FSfSkUYVaLEG5o4hxMw0sCh0K4kNRkqAkNMhQFpE0lBYiyagkg5xJVgI4wkGJ1QiMYSY3A4W6KdRQOoGBwoV1EoIbZCBUSqolIKMRUORcPlxNagpALnzV6JUDiLw6GU/8PFrRyIw//POotTglIK5a4/Bw4roKMIay0igog32OXCASR8prEW6xw2OAulFDUkrqoKrTUigrUWay3A6ruJYIz5OFtZfhaARnAiiEAUlvs/+Y//wcNPsrWfhpEfA7fWHh+FY588RKDRpN3b4qtfOGKrp7m4WvD9B6fMipK9fpfXX9mj20p5ejHhwYNL7OIK7BQJbl+JweoEF3d56dYuhzsNUJZIKRYVHD+9Io01B3t9mo2YyghPz0Z89HjAy0dbHO01OTmbMTOG0SBnNsnQdujNVAtGddnebfOFO7uAozQWYxzD4YTCWva3NmkmEdP5gkenE8bzjH7S5ZWbXdKmZjY3PHk2Zb6YotwUjcIpTaES0lbK7Rs9+t2EKFLM545HT69IUs2dgw2sNZQWjIXT84yiKrl7Z4vpZM5kZpgtMqZThaoKlKsQpajNT4laelPwa1wRDBUQJTjRWPHGpESWBuutV0AJTsnS0Gqjq41XlFp6YCUSPt8tF8Xzxrx839qCAbDW/phBO+euLQLn3NoK9IvIOvup5vXTMPLvAK+KyMt44/7PgP/8097gVMSdw5v86jfu4qi4mix46ZVNejtdHj8d8vUvHTIv50wyw8+/usVWs8Wff7/AVh6yGBxWO8q4ya0bKb/48wcM5xVVVYAzbCrFa7fvYm3F2WTOorQk2vLNNw/Z7Qs3bh7gyjl3bt6kqApGc+F3/vQ9bNZAnAMdEycNvvLmLbAFsyKn3dC04oQv3dmhtJar6ZRZUbJ7o8/h0RZv/+iCN1/bwtmSy2zBzkabvRsd/vQvHlDlXYRx8OIRP/elQ7pNuJplzEqh39L83a8e4nTC5XiEqSytRkwrhjt7u1RlQQXc2tsgrwRxij/63hPyMWAWS7jlcIiAyCr0UsHDr3tjE4xRKYXYFYCBgCRErl2vdcN0zgXDW8dIfjtwzi09c+3Ra4P/VHt4ztDrz7z2uIZwzvJZ5MnfeODpnKuA/wb4N8A7wL9yzr39ae8RUXz9zUMm2ZxBVrDRa/LhRcbRXpe/9/NHnIwKKhfTbSX86GLOnaMmW9t9XNLGpF1co49JNtGktOIGpRVOLqdEaUKr0+TDqwWlMxSuolSadq/FaWEYZSWvvnzEbF4xySPySvHRsxFpHKOIaQJaaYyO6G82aDcbPJkZ2u0OzWaTJGlQ4D1ZHKe0Ww2eDmdYa/nln9unUo6ng5LNZpvH5xMkVrx8sEGhI4wK+F6EVqJYVIqo2aLRa/Hh5YA4TVi4gqvC0uq0aDUSdJKSpBE2SXg8LnHEfHhyhVagxGGUxUQJNng3pUAFeLC8Ke/d68eIgFZLw3UiiIoQiQCNQ4Fb3YwBZ2W5KLTW3tMqwQpY/A3AGLP0zuuG6AKY1lojKsRC4hff+jnrm3/P2k353QURjHOYzwDyPxVM7pz7DeA3ftLXawW9fpP7T2d88WYHCsdBt8lgmrPVa5KbjLvNPqYquUxScoQvvrTBS3f69FotHh5f8OGTM6yxnI9mOANfOdpAJxGToqTXjGlEEVklnI5GXC0yWolis6MR5Rgucna3+5SuosTiTIHFUUQ9hBmOhG5TsCZjmDniqSVSllc2Ez766CmI8PLhNsQNRnOLtoYoSXh6MeP2fhcKy+39LhfDCXt7fd57OkRQaKcwopYx23snU7Ky5OW9bRDFvHBcZIJzhnbsuLPVoqwKBvOcbruBRZGrBIfClhkWoZCYREBLFQLuFTRwzgMXK6tQtQ4GWb8vghOHtbXxWITasNejeK5BFlV/RvDEem2B1a/18MKhtH+9DbuAhOjWsYb112HLuiO3q2BapP5LPnm8EIqn0oJ2ghZFoiztppBXhiTWTIuKZgw2gbQRI5WjqSNeu73NS7f3GGQ5X3/tkHajTSSOxWTOd976iHc+OGE2zTgZLDja6iIu4nRm2WoqfuXlDtvNiOG8JDfCwji2EsOsdOjWFo1Wgzfu7mKihNJGgKMwQqxjvnLQ5uWtlF4inAxH9Df66CRh5hRvn4zYbiVsttoYZxBb0RKYzjKcVaRRTF4sqDdbJ4o0jmikCc/GGa/c6PL1Wx2yPKOqDLtJwpf2mtzdjqkQTqeGRhxxOjPc6MQYa0iUJYqE1145pNFqY1WCE41ojSjtjW8N06IUaIVVYJXg9BqrEozUiMGKxYrFKYdHOxaHAWwwdK69zxhDVVWrzwGiKCKKoqV3jqIIrTU60qvvpJTfbZRaLrbaeNc9en2/Xmz1bd3bf6J9/Vva59/IqIxlnjtsDN9+OOOdq4Kn8wUqjtiMhFmu+dOPFrx9VXJVVSAlWEOiDLv9lCSKUFFEZCGuKp5djjiblBBHFEVBM45Y5CXzyYQoibFOaMWay3FBBJjK8qNnM+6dT7m6vMSUhtdv75FoR+QgJufp6YC33jnm7HyAVgrlFCqKOegnbG00eXQ+5NZmShJDhSUVzcImTJxiZ7vDxXhBt6GZFxAhYeI1SaxR4lgUhpZyJFpRGGGaVZwMpgyuFiSSkFLRkBKc0Ik1H5yO+NGzEcfjivPJnNsHfVqNKGzjHhIYuyIwa4MAhzUWYwzGGJyxy8CtNiyNoJwQiSYSheL6Qng+AK099vPY+BojovXyVhu+hMWutSbSEZGOrr3uOsTy57LOQh0/rO0cnzb+nVGI68MZePjomNe+eJvzUcbTWU4aa7QtKJzmC/s9ng4XTBYLupEgLqECzqcF9y8L+jcalNUCjwYdkWRs9mKcWA63Ojw7vWCRGY6O9jkdjjiZLojjBnd2eoxHY16/2QepGC4KukmfJNYsMgMqAq1ITIWl4tEzGM9a3D3aAGPZ7SRMs4pBVjG3ig+HFS2VcdRPiJt9XttpcDIa87CAm70YLNw/HhDZwmNoEfIiJ88NL223eDacA5Zbm12wjh9+dMZWI6I66BHFCSIV73x0xp3DXYw4ClNxs9dku51Q5AXWk+14yBo0B1Zbv3MOFyCIwrMeTpxnQ9aMV0HgEQOLIuAsaB3jnJ/jJXnowFm7ZFUirf01hWXQWdOZ9ajpRVE66AMhQI404q773TWSMmgbBLJ/9Xc9z+s/P14IIxcsb797ytWk5KWjHV7famOM5fh4woMPn7K5tcHhjQ32t9qUpeGDRxc8u5jxtTcO+fKNHmejnNIISlmkMkgV8+hkzvbmnG4z4f1HIwaDBZN5yY2DLbrtlKqy/MVf3efkfECn2WS71+Kl2wfMK8db77/PeFZQFYo4UogRYgqsy5hMHe88GnC0t8WP7l8wy0veuLvP9l4Dax1laZhMLQ8+ekir1WR3o0PSFYbTjB/ef0Q1z0lVgXYFjpi8ivneD59weLPPfr8JwGS04O1H52SznKsMHp2O2dpo8+6H55xejHh8NmWjGXF0uEWSJvzw/WMuBnOyUkA816gArQSDx71KNJ59q9Dae3SRFU6GFQNSB4Jgl8auRRNFGmM8VtfKG7O1FmcdShQ61sv4wlkbvLW3SSX+M+tFFlEHvn7XsXi9QQXKccmw1MJcoA5rQ6+/u/0sC+enkLvy1xl3XnrF/Xf/4/9KFSUQpcSxQmFwlUMMKB1hFMSxx35KIpS1NNsNGg3FeGqhmKCqDGUNlcSYuA06IlGWvBS000CFixxWeT5YOYt1BlCogF8tCjEQOUPkFE5ZIuZoMoxEFKpFpVIinWJL7+JUZIki5QM5ixewRC+lVokUlTNEJqchBREVOIOtBKuaGBtjNVRA5Rx5lmEWE2KpqESzMA6JU8QVtOKUTrODtRpi7wkVLnDfDtyCxFki41DUnhK0inBOqGyF0grnLNaaFXW49q8EI1+qyoGaVqIoywpqnn0tyFwKP8C6MYeH1DBeHBjxIlwtR68HwOY5e7Rrj601WLOiO9epxn/yj//eXzjnvvlx9vWCeHJHZKaIU2jbwFWRp8WsQzmHGKGSCFd6LJuoCsQxm5QsJoJoSKocLQaUAQuRWQAaMRUtY1HG4bTCWYVxDq2EyFmUq3BicE6wRuFIUFZQWLTE+GtVYZ1F64omC78NmwplQQOlMSjnjUKJ9t7GShDfBWMcrciRSE6iQccxVVlhzZy8HHN+OWQ2mbPIC2bzOVWxwJmcdislTlqkrR7d3gbWzrFY5sMIQ0qlU5wSNKCx9PsdkkaCFoXSCqwNwoxgnUVURKQib0zGEcfxx1+PYMBKqyXPLgLG+HlXaHSAMTV745xXfz09qSBiBUWQJf7XSqFUYESsx9c+CPff0Tn/vWpOPa75cAAlVNjl637S8UIYOQix+ABPG0NlFCqKvHDh9z7EgZUIcUKCAjH4hEdLJEKkHd45GH/RXYmzhZekqVB4DKytwmGDl9WesnIOjQYVsab8e49MCdpilQpep0KhUM6hlUNLhFDifZgFp3AOFAoRjXWKSBy6WiBiyAvD0/tnZIspo8sLLkdXLIqCJFZ0Ww02el2upleIgl4rpt2EVsOQRnNG8zn5IiMzoKMY1UjIy4rFPCNbLNje3qbZ6JC2W3TbXdIoxUoMSuP39eDxA1SB68JO/Xg5XJ2DspyQQE8rrHiDZs1D+ynzMQEBikjA7Vr7nU2LwrDC+rVoJCJ+txGz/B5a6xVFiYc12oRp/ttn5IBYtBLEVWiBSABJfIhjAwWllN8GtQIsqXaI+NwMay0OhbE+yLFicc4ABqcFF0VBvVQodAi2FLUAp5THk+IcogRxGgKFrXSEU+EzHCjnL4Dfx2u6C0DjXPCC3p2jxSHOspjPePbsmPOzM06On2GqHK01mxsbHOzugavY7G3w8KMPmc+m3HnpDhudNlEU0e+1GI0nFIuCxSInjhMGl2fs39glUZa4k2CrnIuzU0x1ynwxp9FscuvWLTYP9un1t3wQ7SQYOYgiyO4q4GUd4IfFmSoIQx6nG2pYoz2eF891OwDrgqLqloKOnwM8pApBZaTdCvMbi9LapwsAVVkud4woiq6lAtS8vc91ceiwq+A/0rMt9tMN/sUwcpEgDgSsTB00EYzI+YDKW2GtNS+DFheSkFY5dSuBQxQorQImdWHrlXBhxK+XQGbVOR7r3kME7/mDN/IxkEK0Du5FEYkFMR6fByVTKX+hZ7M5T5884r13f0hZZsxncxbzjJ3tDW4dHdFpt5lMJihn+cvvfZ9mI+Ho8Iheu49CaDd7VKXj7PQCdIzP14DRaMjB4TZYQxzFFHnuA9+qpNNpEicJT5485J377/LSS6/w6t03SOIGuChkOyqctcv8lXrCnF+3Abf7wE5EAm+1mhMT5qkyVeCwaxrRn8/vdsovLOVAKkzYQa1xiDgs4dzB2HUA/9cSwJ6T861iyQY553xsrK+/5vnxYhg5PoCxzqEjLw4oNNbK0qtaWHpSrSUERIbKeGXPG5X1i0UpcJYo0h6bQhAwvGGDDxCd856s3hZr5aympXwgpcIFsUtPZSs8lAnRlK3PGvhcU1VUleXRo0c8ePAhV1cXjEcXjMcD+r0+N24csNnv0W63OT8/Zzqd8uThQ24eHHHz5i3yYuG3feV548FwEOg+QxI3qKqK2WzqhRBj6DRbNOKUUT6lqgqcM3T7XcqqgFnBX373z3j66DFf/co32N07CpK9Vy9XBuVwzqAUxHqF1f3z1mcQxtq/TwRnAw/vwBmLs4LSmjpXymdfQqQi74isRYLgHynloVBlPO2otMfsYdGtPtfbxJLaDFmSWumlEzFiKEz1qdb1Qhi5Nyjx+Na7TkR5j+AI9ABuBRGAmk+SwFF5VVjQQR0jnFPpMOvBO3v6THn4YVh6dPCwRKmVF9da403fht0kfF8tKC3LHUGJXu4kZVHy5PFDvvfWWwyHQxqNJmWRURQFt2/f5s7tOxhjSSPNYDDg+PiYe/fu8erdu2zv7tLt9UjyhDwv6G90GAyHPHr4mGazyWA0ZHd3n/F4TJ6XmMrhrJ+3WEfMpjMazZT5fM5kMmE+n7G3s0WZF4yuLvmN//df87Vv/CJffP1LpGka2BQfjIsIcaxBVnnuSxAQBBlbZ//VWD14fJ8rHm71u4JkX1kDzqCUh3A1J+6cLJmVJf0SqMFl4KvUNUcuIivsX18kQH1GztcLYeQOh2gX6KJalHDeMzjBugrEoKOgkYkLooQNW60/i58UhygbAhkvUDhX8731thwCnahO3awVP+UXVoA1KvIJSj7nwwZazVGJxWqPU7EWawsaUcRoMOBb3/pNTs+e0Wo2GQ2vuKwq9vZ3uX37Fnt7O0SxpjKG+WLB8ZMnPPjwQw4ODuj2++zfPGAym5ItZuzt73MxmDCbzchKR2EWXA1GJGmToigw1pIXFUVe0O149seaiiTq8OTiko1+n0g0eVZy6/AmDx89oSwz/uzP/pgnz57wpTfe5NatWzQaDZw1Yff0Blvhjc3amh70HtzVApNS/hoEDOOvWoStWRwJi0XCgnA2yPaOSGlsCBxdCNfrrEljjIenLghLkT+utcYYS2UMdba5C1y6EkFH+lPt64Uw8tobI6Ai7flQHFHtxAN3W8sG3nMY7/3X8hZWHpxg2BIcuKx5BFvTs+FCEjyIWn4Z57w4EbKg1xYIPpDChhhB0EpTFhXv3bvHt//wj7i8vCRpxHz44QOm0wlHRzfp97r0+310FDObz3DO8ezZCT/60Y9opCn7Bwe8/sbrZMWC+x/e586dWxRVzqLIcSGX2wAmUG7D0QAEiqIky3OyMqc0JcZUlEXBZDz2Hs86bGlRqaLVbpHlGQ7Fs6dPmYwnXF5e8NWvfoVmM0WpCGcs4iKc1FtpzWM7dBSvJPRaoEEtIZvPTFRorZa4vF4BWkWoZVzFcleV4O2XcETrgOFjRDmc8wUgimjJl9e7i3UBAml9PXnrY8aLYeTUeRWsRAnqCFuHAGT1vIhCqaCoBSy+PFeYsNrg/TzXEMSuLRjwJXIevvjAacUSrA8/v35HECARz1I4HKPhkO99/y3+6vs/oCoKOp0OT54+IcsWvP7663S7HXq9PgBnp2dsbW9wcnLCvQ8+oCxLvvH1r/Pq3bsoET788EM2Nvo0m02yzCdpTadTrLVcXFyQpinz+YzpdEav111+vzwvAkQZk8QJURSR5znWWtI0xVlLu9XCGsNkMmOj02SRZXzn299mMRnxC7/8S2z0UxwWHSkqa7wXDhNYq4vrOeR+vckykLcBrgkBYkh9Zet5Z/nemhtXy8WysgOpr6GrU3R9LGbr9+IN3IZUgo/LPX9+vBAJWkusu1TOVl9aJOQdB5FBqWiNIVmpcyu1bnW/hid+W/WYUdbzo4Mn9gtslbtRZ8vVlJqErbf2/uJ8Ou3TR4/5wz/4fd768+/w7OSEre1tLi4vsdZy8+ZNGo0GSZKgteLs7IxGs0FRFFxeXjKdTnn99de5e/cujWaTBw8eEMcx29s7zGYz8jxnsVgwnU6pqoqqqmg2m8xmc6qqpNfrAasL3263aTQaTKfTJSaPoog0SVjM5xR5Qb/XI9GaZhxTzGdQVdx//31+//d+h5OnTzBliXF+D3OuZqtq6nSlbALL7D8RtbRTH8jWlzTMmaoDdBeYKbcUiK4ZPsGYg4TvrAvMmcMEY18FYavPX3//J40Xw8iB1TpeP+Qj/hoP+//Wjd17AhW43tXEy3LiV97Ge2zwBQFKxQE71tSZw1qz9h5ZHnMYnFREEcSRh0o//OEPeOsvvsuTx484Pz3jtddeYzqdYqzh8PCQw8ObRFFEs9lkOp2yt7NLu9Hi9OSUB/cfsL29w+HhIYtFxtPjY5RS7GzvoJTm/PyCLC/Ii4I4jpnN5yRpSrvdZjQaUZWG7a1tsiz3OSNhQVaVYZFlFGVJWZZEcUye5+R5vpynXreNYDFFQRontJstxsMRb333u9y//z4itRc3iLI+YFSsyuKCgXqqNEATWWU4rsomPKwTCTfcsiKpFpFW0r8/HmlFpOvzeO1CaY21FmM9c6a1Jo7j5QLzt78FmBwneHF6JYXXW5pb5i8LoLE24D4UjoJakEFUgJBCneTv8fXK+J2rFUlBaReCJxcCrHoheDy/vHgiWGU9346hWMz5o2//PqenJ5Sl4+zsjJe+8AU2+luAo9PpYIyh2Wgi0sQYQ7vZpJk2ubq64t6799nq7vDynZdwTiiKHIBOpwsIi/kCa6AoDDpJsA7KyrC5teUDO2PBCWnaYjKZ45zj4vyK2WzG1dUVrVaLZqNBWZUsFgsajZTJfE4cR7TaTXSi6DRTkouERtpnkWV0kg7ZYsbv/d63OLp5g2a/5+lQpYN6K55Bss4zKNYnfgHUdIePKwXrDCK+Kmnl1ev7gYEJzsnhEBuuHZZIEQJWgw27rYi/Fi7oGUsmy9NvPj/nM8TPF8iT1xPhlj69pptqXFizLvViEGoYUweS6trNn9O/Vkl4rQKRGiP6K+EXgSaK4pBO6heCiC880KJRQJEX/OEf/AHvvvMOWVZxenLF7aMv0Gy2OHn2jHa7w2w2Z2trF6Uitra3aTQTmu0GF8Mrnp6e0u53uf3yHaqqZDgcopRisVjQCh7//Pycsiw9nk4S8jwPOdg+xzrPcoqiuFYzWZYl4xBsmqL0OSIIxWJBHMXEccxoPF6+1hhDr9ejqioaqYdUAP3+Br/5W7/FYDwkIDyv+opgcJTO+m4CdWV/nYciQp117q+d9s7qOYhTX+Nrx9au7youW4ejazu0Wl3/wBkvr92njc80chH530XkTET+au3Yloj8poh8EP7dDMdFRP4X8e3hfiAiX/+s8y+/iKqDP73841bbYJ15tsLs3lMohIDREbRex+vrxh6mXzzFWJdXOhsk5yjyHDEBnjhLnTddezRbWe7dv887772PMYrjx2dsbe2xu3fAo0ePiaOEhw8fsrm5xc7ONs45Tk5OSJMU5+Dq8oKnT5+ws7PDxsYGxhg2NzeZz+dsbm4yHo8xxjCbzZZFBePJhIuLC5+wBJRlyWQyQUSYz+dYaymKgtlsRlmWFEVBFMfoSNNqtSnLavna+XzGYrGg2+1RFAU7OztcXFxgrWU8HhMnMe12i4cffcRvfeu3KLIseHCFEi/A1SJcFGl0pNDRythrI9U6pCfLql6zvv3YwlABgtYOKFy3WvUU0SFFuD4uXsK3PgUkqlN5P4Nd+Uk8+f8B/KPnjv0L4Ledc68Cvx0eA/xHwKvh9mvA//YTnH/tq3iDdK7Ok1hNTO3ZVzWG9YapA8Ze9fdY6REKraOVh6BmT4KQpOoFUwewDqUdOoIolrBteqrq7Nkp3/6Tb5OkTSAhbXR4+ZVX+OD+B2xvbxPFMe12h36/x3w+ZjwZBC/Z4uzZOZdn5xzs7tJttcgXC0ajERsbG1hrg+jkx2QyQSlFHCcMh0PKskQpRVVVWGuDwNRgHgzbWsdisSDPc7r9PqWzlM4iaYxKYxqNBnmekyTJsteJUopWu00cx0ynU05PT5lNZ1xcXLK7u8vJkyd850/+FKkskRMi8Ql0jUiTRppIfNpFbdTe4Xjsfv24+kTmQymFVjFKx0RR7ANYyzLm8nYQruPy/xKICCGKdFBQ10unP9myPnU45/4AuHru8D8F/mW4/y+B/2Tt+P/p/PhTYENEbnzWZ6yC5jqqv258SulA/a2O+fwLjaDROkXwW66jCucLUMdphJg6SNKRI4r8TqC0Z26UDvcj0JFFaYMog9K+YPm9997lN3/7dzFWQMfceeULvPGVN/nu9/4Cg+VLX36TyXhAp9Xm8vKSVrtJt9tma3uDsix4/PgRvV6fNE3JFzN+8P3v0e9vUFUG0BwfP6MoLUVpKCuL0gnGWEZXA9IoRgGmLHHGYKz16udggDhFGjUos4oyq9jsbxMnDRyaxSKnrLygVhQFZVGSZTlFXlBWJcaU7O/vc3Z+iogwnoyJ45iqqmi3O/zlX/4lH9x7PwT9gXEJO5sTF0rmrPeq4lDKhaA15PFgAxJZsSka7dOARaGIcdYnCfvdIsL5dkrL4FREYZ3glju0v8JKOeJYIZHyDaPkxxsSrY+/Libfd86dhPvPgP1w/+NaxN38rJP5aD1C0CiJiKIksCcEr/txXOhqO5RVy5wVzNGyZuwBXLLyED7pyjMniPGLA7PEjEp8puH5+TlPnjyh1WrT6fZQWnN+ccE77+By8s0AACAASURBVLxDURa8/vprDAZX7OzuMJ1N2djsk+c5R0dHxHHE1dUlw+EQEGazOYPhgMViQZJojo8fgVisq1AYynxBpKDTSkkizSLLEBGqytDvb3B6ekqr2cRan0sSpzGzfM7F8IqokSARXF6d02qnZPmMLJuSZxlxHGOMZTqZev7DWubzObdu3SZJEhoNHw+kaUKSJDhneXZ6yr/51rd4+PAhtYPwHHdd0Fzz5rUXDTTfGqd+jdpbpxZh6cxsoGnrPAHnlo3tVm9dh0Q1x750dp8RdfI3EHi6FaH6/2uIyK+JyHdF5Lvj8divXKWXGWZLCKGkbrGBqNVER5FPMlpNRpDiA53kQp7F0ksH+OOswxgbKnfAexy3XExQJ3PBeDzmj//4jzk+fkpZVrRbbcqiYDoec3V5ycHePkmcMBgOyPOcvd09BOH84oL5fM5sNuPevXu0u12iOGZrc5vZfEGz2WJzc4uNjU2cg3a7Q1UaGkmDw4ObNJIGw8EQEaHd7YAI/Y0+V8MhvX6f+Xy+7FJV5AvyxYxmIwbnyBY51jiyRUGW+SKMbre7rJzXOvKV9WVJt9the3uLyXjMYrFgMpnQ7/epyoqqKDk5PuZ3f/t3GA4GaB2F7XY1T8vdEkKRSK1NqJDisqocWl2jmrKt0zJCuiyr9ApfaL1KulpvKVc/LorCVwmxvhw+fvx1jfy0hiHh37Nw/CduEeec+3Xn3Dedc9/s9Xo4KpyrWPG0Ndcqy5WslIC4cH/Fxqy8ySqXmTrKFwvic19E6izFCK3jIDeHJjq2FohYXohvf/vbPHjwgPF4wng05vj4KXGcMJ1MaTWaKBEGV1fkWcnpszM2NjYR8YupLEuurq5wztFsNkmbTeZZxuXlBTcOD9nc2qTZbIaKI0XlLM1eh4Nbh8yLnGm2AIGyqpjNZzSbTRaLBTdu3MABGxsbiFKMRyMcjjwvWGQLKlMxmU6WrE2R53S7XdI0JUkSskVGnuXM53OiSNNqteh0uxRFsRSQNjc2uHl4SJqkTMZj3nv/XYpyETL/NOIiloroNW8aTG6ZSrHSIJbOOTgWqBPeVvkt1q2fk2vMylLsq0/h/I7wvGr6ceOva+T/Gvjn4f4/B/6fteP/RWBZfhkYrcGaTxweIhiU9sGLhw92rddGTRO6kCVosVSIMiAVjhKlLaK8R1aiiOOYJInxBQ1CFHk8rnW0DHSUSlCSoCRGiHAh/1mriOFwwL1795jPF5RFyenpKWdn54yGIy4vL2i3miSx5uL8nMl4yu3bL7O5tcvW1jbdTpcsyzg+forWEWnSYDKeMBqPSZIWO7t7jEZDLi7PyRZzyrKg02uyyGd0+13yygs529s7TKcLlIrJspKiKGl2OqTNJlGSUJgSFwmTxZx5nlMaizWGPM99L5tIiOKYKDTrbKQpk8nUG6oSqipHKdjc6rO3u0dVGarKoJWi0+6wv7dPnuU8efKI07NnoVDCA451w3YEOwuMVe3F64tbJ7a5UPRcVzzU7SWQFfnorPOFGCFxrpb2nQVnbUgAC6yO+KzS5BPK+OrxmWKQiPxfwD8AdkTkCfA/AP8T8K9E5L8CHgL/aXj5bwD/GLgHzIH/8rPOXw+fk7b22FmQFWMisurtt8y3XG6fgqgapqy42VV+eEj2EZZppStpWXDLLdafqyhK3n3vHbI8R0QYDocsFhm7u7sMh0NMVXLnzhH3PrhHFooVtrd3ggfPcc6S5zlxHNHt9kjiiCL3FT2b27tUlWUxz4mjBGssadzAWaGRtlASEUcpjbRFkqSU5YCDG0ekaQvrLFmRkTYbOAWiFWVV+VYUklAWFohpNppolVAWU6IoIlssqMqSzY0NjLGUJsIag0hFI03Y3NlhPlvw/oMPefz4MZ12B2ss/Y0+Z2enPHr4Ed1eh92dQ1+5Q81w1cI/Ic6R5REL6KXoE65LeJ0oBVSB+w4GvFwUCh15ncK/GAjn9bGWXiWF1fL/v23DT+fcP/uEp/79j3mtA/7rzzrnxw21xpXWW6AxVQhK8aJNveJFrhkz1KVc10UHZ723UKG0K6wHqD2GrBzJsp+ICKPRmHfffZfZdMp8nnsP2mgxm8+wpqTT6fDs5ITpZILSmu3tbRaLKU+O58QxFEXGgwcPaDabtNtN0rRBlTbJsoLFImO+yIijFu12m1arxXg0InEtOt0eRe4LEGazOdb5AFEEnhwfoyPFdDqhLEum00263R5KIpKoRae9yWw6J9IpNw5ukeU53e4m09kcjReyqrwkThLEKhazGWXhW2PPphMuzq84ffaMrJux/fo248kEWxkajQRrDE8eP+Hq8pIbBy+B6GVPlVVey6orlsMXoK9nLDrniyx8qV1IU/bW7Yuig7EjPtmrjqk8zPFYx4W8Fmvr9FvftSvSn27GL4jiWQsCtQF7WV6JrxBytk6g+vGEnHXD/rGMNJF6HllOUjDwdcXQhdRZh8E5x3vvvYtzjrIsSZLYK4IC49GQ09NnzCcThpdXmLKkEcdYW5Jnc/JsQZ5nnJ09Y7GYU1XeW3U7vkGotY7NzS0ajSaVBaUSGmkLHaVEUcJ8kdFI23TaG7z80qvUWZHGGAaDAY20TaQT8rwCp4ijlIODW7RaPdKkRavdwTlha2uXsjD86t/5+/R6fZ+/vcZBb2xuIiIUeUGr2aTVTLGmJI4iZpMpcaRDzKG4ffMO4/GMi4srPvjgHs5ZyrLAVNUSE2uliMIN63z1Tq1PuDqY942HtF7lGUVKEa8JOiKBI3OBhallj+fgj7V2mbzmc+s/nUJ8MXJXYHlBnVsl8YhVINqXWNXBizOhVcKPtyWrKcVlZG/DeV0dpa7aDFemDIlCtdfwPUYuLy956623uLo697g+bVIUQxbzGUWRoRz0ux3SKKK/vw9KmGVTTk+fcfPmIXlW8OjhI15/4w3KsiKJYy/4RBFpo0EcxbRaLfI8J202yPKCjY1N8iKn02oDwtbmLv1+j6yYs1gs2NzcJM8Ljo7uYIyh21EYo0iSNp12xa2jW8RxhNJNnIPRaMydO3coipw4SZjNZlRFBc6LTXuH+yRpSlkWzGZTBuOCPMtYzOdEKiHLMu8xja882mj1aTdbnHz0mOJrcxrNFiaOfZ8as8LVteTvOyAE5iMY+goiErIL8W2iZSnzYEWWbSwCo/i8lSwZGFh1zU3T9FNt64Xw5P4PCvkHEjqoOkG5CO0itNOIVT4YCTx2nUC1HgBJ3cRCAhzBssw+dAqRCOcgL3KcM6GCyOKosLbCGMMH997j4tIHmFogL3Pv5cucxFmUKei1m0xHI+aTEbZYUCwWWJNhTc7V2TliBGUd2WzCyckTBsMrWu0Wr7/+Jbq9Prdu38FiKU3JLJ8yy6dobYkjhykzYq149uyEOE5xVuj3NomjhCRJSZKU7e1t2u02m5tbdDpd3vjS62zvbKCUo91ucHCwi4jj7bf/ivl8xtbWDrs7+xRlQZxEXFxd4vDpDM6UKCydfhdRiizPefTwES4vyEZD2iI0jMHNZ7g8Yzy4QMR4R2Lccm5NZbGm/mmX67vr8r74XvIOTxJEkS8k10vFuXZ2gUOR+l/fdFTwJXhKqQAF2zSbzVXtwCeMF8LIhbqmT5bScG2sQp2oU0fU6seCDaXUqolknf+wxp8/P+I4CumaeonHJUjnf/7nf875+RnjyTjI5iXOVMynM/JZQSttk80WuCKnms6IjRCjuLG7TxonnJycsLmxweDqitFwgCkKmmkDHZTHjY1NZrM5aeJl++FwyPnZGfN8jqHianyB05Z2r839ew84PLyFT1uI2NjYoNFoANDpdGi32kuZvg5062Sthw8fslgsODk9pTIV08mU2TTDGIspSyLx1frtdotOu0W71aTdaOCM5elHHzG7PMWMz9nQBV+9e8TX37hL7HIunj1FOY/FjbHLDE4v42v/yx+BSl+Pm1YEglz71y3ZFU8sGnyPdBc44lWCnbpGLtQevK5V/bTxwsAVnz5b99oIweZaaZqEmniRWiVbvdfjvQjCwvDBkPGTxBr3vbZY6rGeUptlGYOrK2xVIQ7f7UlHTBYZUla43NDd2CBRmkarRRzFaDRp3MAUhkdnj2imLdrNJoih1+mQxDHNRkqWZVxcXLG3t89kPObZyQmtVot+v8d0OiHPFwxGl4yGk6Bw7jCfz2m3W5ydnTGZTGg0ExqNBiJCkiSIwNOnx6RpytOnxz5/pdtla2uLt99+2597VmGynKvBOZubfXQrJokiJsWUq/ML+r0Oi3KOjmMPBaoSYwuq2ZBvfO3L/Oov/RzbvT5GNPdOzng8uFz2uHHOrvLIg/r5fOMiDx9/XAG9Xl20YmakXgz1bY0lqx3bNf6d67vFx40Xw8iXyuNqq/Mdmhz+l5pqud5cw2rrPfx8ML5GH9Y1m2tSPs6hI309OA0BLiLM5zN2Nre4OD1DnGckGqIweYFUBbE47h4d8A///q/gzIJ7Dz7iapqRjxzT+YzpdMrRzSOm0yG9bpcnT59weHBImsQMJhPOL84YjydMJmOiUO1fVRW9Xo+L02MODvaZjkZERBw/fsJ8Pub09JjtnR2Onz5id3eXi4uLpTfv9zaYTCaUZUGjkTIajUiShKurq2XxrziHKUuShqa0OYlKuDw/p6FjnDXYygecvY0txBpMWRLbgldvHvKVV16iLQY7vmI8nVJlBUoSUEISxVSVwSffCipQvKpuy2FXhl3P9rpHX7dLTzoGCjkQ7nUynZXVbw+J8x286utujLnGsH3SeDGMHF8mBVCXRTnnsMogaxX5ljpQ8fKxEh12AK8WXKvT9LF/ECJkmVfBsjVwwHpBqBBgNl8wmc6WzXqMMSyyhcfwpuDOjT3+g1/9eV67s4vJZ/Rbmt/+sx9QmJxiUaEiRVHmzIsFe60dYh3TbjaIxTKfDhgMzkiSDlVh2ex3GFxccusrX+b+/ftYZ5lN50zGYzqtLvPZlOHlGYf7u1AVnDx+yNXZM4qi4PDwkNHlOc86LWbzEfcffIBWEScnT3HOsbGxQRz7LoK7m1vEqaLbaxMnGkyBzRbEXU0kmkcfPuQLr96h02iw3esyOj3n9ZcP+caXXqWajRlQoLKc4XDIyApFc4eiyEmSmCjyvzfkW5WuPLdSClv6OXahpO066+VlfxucUc13e6dG4NZrdWnVZ6fmyFf9WFatQD5tvBBGLp/0QK4n6+hQCqWUCsVAITR3oRXCckusye/VJPrg5JNWvJ+0k5MTBgMvxWdZRtc5TGUojSHVwt/5hZ+nE1UMn34IZUG1yNhuxDzVcDa+Ym93n0fHD2l3WiSJT3bSolgs5ownQ87OnvHmG19jOJjSbDQQHKPhCGchTtLQAi4lin11+nA0xTrh/PKKwXDM1vYWlXFkeclwNKE3mTAajbi8vOLGjUPKsiDPCwAODg549uwZjVYjFG6kaLGcHx8TK6iKghs37/D+u/dwlaUdRdza2qTotfn3fuWXcCZnuliwGF6RDa4YXA2Y6ybVriKbL0g6HaI4qu2b631SVhTtOq1bQ0ZCfxZr3TLhqr70K/P2z3lqN8BKXTfud36hIJ9JH8ILYuQrxmQVnKyLO/W/PimrHuF5h6e6HKHgtUKrOHhoP1Y56GtUVphZF/CPCFxcXjBfLCizPNBTBmN9KwithVgqnn34HpEtiYylqBybNEjLjK1eG0PFPJ9zePMGjUaDjX6PWEccnzzl6uKc20dHdDotyqxiMBiwtbW5NITBYMDBwS5xHLO5ucnl1YjJfI5TiqwoqZxjnmUkSUqj3SZKEsqyDMUT/u9K05TLy6vlz5rs7e6yubXNYHhBFCuarSaPHz3mlZdfIkkSWq02s9mMwdUVX7x1h/12g5/7h3+XnU6T6WzEfDoiO79kdHHGvCiR/gHVYsF0PmND7Ye5Xa/iWV3DujNtWZbLBVAXpDv89TVlSZ13pLVXg1x9vUQvd926KVFN/xLyY5xzKLcKXD9pvBhG/inj44KKVeKjxeeLa9xSRVtPsvIY0Stkag0Hrvq31AprWRlGoxHGGOaz2ZKmnE/HISXAMhkNmM8uKGcTGqLREqHiPjdbKe7GDb7/4BH9jS06nQ44R6/bZTqdcvLkmC9/6TV6m7s8fXqJtYbBYESj0WB/bwcRR1UWKC3kRcZ0NqXf6xAraMQaU2S00giNZTEdE4nFmZKqzLHOUJaGLCsoinJZhDGbzRiPx3TbHabjOf1OF7HC1uYelXFYY2g3E24f3WB0dUE1n/DmKy+x2WqQLabMXQX5gtloyGA4okobRI0E0oTBaMTN54LJ53WL9aDwx5gVWDFlbp10lOUvViAKa0K6BYRr7TB1F9alXP2ZNv6iGbn/o5wLTeyfw3KriasrXPzPb7jQBUVE/BaKbyDqrAvNJwlV92F7rCVkaipWEUWQ5znOOSpjSJKEosgp84xIhEYcMR2PYTrGZHPy8ENZSpUkm5tsdLqUWc7u/g1uHu6Tz+ZUZUGeFRwdHXFjf5/9w1vMZiXTeUmr2WY4uiSKNNaWIDa0nigpy5xWK8WaAqGiKhaYqqDZSJBIKLMFSaypTEGeLyhLy3AwZDL2jYuOQ/V/VVXs7e4xuLykzEomecHO7h6lKej2u6QNzeHhNhenx2ALNja3iJ3DCDSdkJWOauHL4IhSbNLk9PKcg4vTZQP/59Mpajh5rVJr7fqp0NwT50iiUIlf/wpzSG5xtm6tHcCJw9uFP0vo5FW/ob598ngheHLAU4VhG7oeR/g/4rpnCMddPRFBWVvKZ+EkdcquBNnemVDIfH1rRaCqvHRet2/wCuACRPvgyVYsqpJJUVBaobQaqxJUrNnp9mjkJa8e7LHdjmkqyGcTstmUV199hS9+8S47u9tsbHSJ05hXXn0VpT23naQpIhDFkS+EiON6MlA6/ARgoAw77Tam8t1znQg6ipjPp1jjMxSNcUsvDt5b5lmGOMd0POLhww/Z3t2g2Uq4e/dlms2Yw4MtXnvliJ3NDmms/fdJGzgVU4pQRRqTKKokxcRN7j/8CFMVwbB/vJD443be5yk/nKcafWtt39fGYkFCy+tg6KHLXF0O43G4rHrwLPUT+VvAk/si5JWAs2qhHIpX1/qAXTNQVyufK77Vv8/ne6zz4c/XG66oJ3PtWBxHZFL/nLUjK3KcrcgRZsZiS0c+L+g0OiRRSm9rhxu7NykixzfvHvLkYsCTB/fY2Npmd+c2r7xyh+FkiA2FGlpFlGXBxsYGVZUzuBoQJwmpSa/VRs7n82sLO45jur0eo8Fw2WzIi0AFrWbsd52qpNlsLEWjSGtGkyGVzcnygqOb+xTTMb/45TfY6XehzGke7EHepqmVZzHiiE5rj97OLiQRT67OyFxJ0UhpJinTacZoMKVuzuTnzReII6uK+xqL10F/HU/VgWhdBLHk0qlzw/F42/pqsarwC8riF/36cM7TjuL+luSurDy4X7Eu0ID1oTrQAJZexNvsenC6CizXI/uPy3ORtS2vvhDNZtPjWmOIIl9Bk6Yp2bwk1gnWKGylERLS9gav/dybvPnaF0l0zHhyzsTmtG7sMnbQ3tyk3e+TJMJGr81snpHPM/a3d/mT77zFL3zzm2xt9Xn3nR+SpJFnc3pd/A8D+IJlYwymqiiKgjRN2drcZHBxQZKkXqKPE9I0pdFsorTCVBVx3F7+fGGj0aDVa2BPC44Ob3G0u83+Vp+bWxuMzs5INXRj/4O5kXOURYYRR9TwVUyVeYWr+YKTH3yfxtY+Z8MxVjRFVbHIFrRaTWoqtr5etQHXMKZuql/PeX1dPq7I2Ru+1AqdP6OsHN/z2N5fPVkmcn3SeIGMXPyvO4TAQmmIYv9zKZ4hXy9rq8fHY7EV1x5eEyJyuYaF6gn0XsjhL0hRFCBCnufh58RjMJat/iaR0+hmj4I5t1//Im/+4tfY7nYwWYYxTSgVEls2Ww2iVou03SIvcrLxlMl0xs7WIW+8doMf/PBHtFopnc4Rv/e732L/YJei8P0MG40UQSjynGazibFmaRjtUGG/2skgTYK0jQpVRpo0Tb3s324zmo4Q7fjy618kNSUv39jn/6PuTWIs27LzvG9355zbxY2IjMjmvXz9K75ilUgUSZOiQNECBHjsiW0JBgQZEOCJPTDsmSf2wAN7YkOADRgEPJANA7QhNzBsyIAt0TJoUlTHEqvIal/V69/LjIzudqfbjQdrn3NvZr2OVAnIOq/JjMiIG3nP3mfttf71//9qb285rUoMka5rSD7Rh5au7+nWt/j1BVePP8a3mvn8nJOzl+iKOe9877sooymnFdYmvG+w1uGDONkO48yHoDFsZiHCZfu/xNiXYNzAh+uqpGeSDiBIrUf3raGlP66+2vuef9b1XGzyRCIpjU4WHTVBBXQ+imS6mcyZ+Yl8Lw0RYnC80k/l6bLBh+YQDNMqUjoUwpJfQzNfLDDaEVXEGkNKmhgD2ii0s+hqwvHJCc32hlffeIW+23F9uSP2HV3bSp8uJugbjDdUeLTSXLcdhbGcnyyp28TrD1+ga3csjo44Wi7pfZCpZ3kRnbOEEJlOp2JOnxLeexKw29Usl4GQYOBZO1tgjaMoNdY6mqaj2V3w6q+9yne+90f8ws//ArOq4tV7L9JubrBOMy0c9e2K2Eqh2zYtm82O7W5L0D1dB21nmZ484OjkPn/4gx9x+fgJFJY+1JSlIvhI0zbYsgIdCVrutAlCiSBp9IHIXA86zSQ1VFI+N/JEtZ+SkZlB+YQOPoIWj3hZ4LxWZDp2imij9v29z7iei00Oko9pbVDYfEtyBMsLuT/yGCt78b9WKGWlaNFKGkR5isQ4emV4NtLecVWMP7OUyhii99y9e5eYPIOoOUaPwlIWMuJbT0pmZ8do3bFbPeGyuUEHSNHjrCMZS5dinloXibZguTjFnN/hYrNDhR6jNG+89hLf+dHbnN25w2uvvsq3vv1tymmB1poQgthB95KLXl1dEYIIE6qqou/F/i2avXDEOUdZSKvfhxalEud37zEtpywWR5yenHI0XWCDIigNxtC1/ZgK7rbilLtabVivN+zqFXWXCMUR947uEqzle29/jxg9lanQyWBshdaJkDpUjAgzQhAvgQWF9TmEaav1EGqALIcbc9Fh92acXKn8nmEc08IQoCQYaCVTJ6wxxC+wpHguNrlCxlzLAzykFkO7N7flleR+5BsoBkRIdE5Pv419xJemz6ALTDHftKe/GpBu6r37d8Vgs25QQAweZxXWyTFcLqYUyxm+Lbl4csHWQKksWslwtWgM2jlKpzExUEco0cymC9zJks3lBWZ2RGHh/t0zpqXj7PSEpt4RYs+dkxOi90zKkq4R6V1d12glhZs1hqJw1HWNKize93SdGHrO50vapmW9WfPVr/48v/mbvwExUbcPuL26ZPnzXyE0O0iJru+xMeKDFLBNW7PdbVmv11xd33C7vSUUU2anczg+5u0/+S6bpqEsCmLfUm93+JRw1jK3htB1+K6ndA6bEj5Kwa6L7DmuVD5gD6HGBHkdBR48SCVzfRWjjETcf5sMVogpofJIdZ0HLXze9VxscplKJtE4qZD3uWgvY8rWy2aIvKC0JYWUp5PFbNjOyIEAxibPYbGijBjkfFrzQCnF2dm5OE7takiJpq4xVlFqx2RS4aqCJvQszs65urjg8eqKuZKFiEZjioLpZEqYTZgUBUF31OsVU61xkxmYgt43LJczbncr1qtr7t074/XXXuXdd9+hcgVRKU6Xx0Tvsday3e6Yz0RZNBRyXdfinFB3m7YBxOjeFSVHyxNiCLz44n2+/93voPqG5WLKzfUFcwN5pBUhBNq2o6l3dL6nD57Vdsv17S1NCszuLDh9+JA6wj/79veIQXoRzoHvdlifcDrikvjX9L4j7tZ03rNrPTe7juX9B1TLJT5JVWXj0yzCELKdduYPSdBPIsQYitgUxvzcGLEnsZkaYJCP/afAlofXlxEyvwT8t4iBUAJ+K6X0N5VSp8D/ALwKvAP8GymlayXv4G8iguYd8G+llP7pF/wUEUVkBCnq/IajImGIYZg3k2myMbuo5skFWsdc0YvjEojd20DdVQz5XMwf7XOYgcAFcHbnlNlsym61pm62DAJoW06YzCeE0FO5ObPJlGZV0/hr1rc3pNBTVAWz+Uz+rsaxrTucnYg7bd1SGIMygaZp6GzJyfERF48fczSd8+orL/P+e+9wcnTEZr2hKquxb9B3HZ3rSQn6GKimM7zv8SRWqzX1riFGRULjyirbniSchauLj0ndjqPpCaFrCVYU/DFGumbHpt7QdS27ruXq9pbNbkfTe8ys4vzuAxaLE/7+P/wWt+sNyhiBemNgZhKmviHWnjZ4YtfR1bf4toOgudnWrJPi+ME5OQEnqUQKGQZUmhSlE53iEJCygkjLOqdEtnGGpISBaEAcGZBZReSH54tw8i/TDPLAf5BS+hrw68C/o5T6Gj9VP8SU4XAN7DkLQ4dLZRsKY7KowuhxriMMxePe/3pQBo1WzrlBJCVQyv/lzZ8G++bIYj4fzTgLZ7FOXLxm8ymTSUVZOEE/nOX0/n2qkzuEakaTDOtdx+31lt3Njs2TFZvrNbtdTdN27Ooddb2irTfEtqFZrZg6x8Q5los5y6MjrDFYZzm/e5dqMmGxWEjzJ0Q2m42Y+yQoqxKlNZNqwpMnT+i6HpDUod5tefzoY2aTku98+1sk3+OspqoKsaAIgRiCbOx6x3q74er2lkdXl1ytN2w6T3QV8zv3OTq7x7vvvc8/+of/gL5vQSum0xkqwgfvvM2HP/oj2F1Qdjfo9RO6m8esrx7xwQfv8vHFY9x8SjEROZ5OYMa12qNbOZHPqai08gdIdy+SGRyz9PBd+SRO+5rrC64v44X48RCJU0pr4DuI9dtP1Q8x5n+G4UsDQqJUHnuYTd/VgcupOvja4a1oPRyH4q+XW5wSBfINVxl+S0nJ0KDos1OquUdlZwAAIABJREFU4d69e8JsU/vmhNE6M+YkdwwkKDSTO6fMX3gRtVjSJkdbJ1ZP1myub2m2O1Y3t6xWN2zrNU1fE2JHaGt009BtN1RFge97Xn/lJc7OTrm5uWY6FSuK05NTXnv1VREIG1HxhGzpvFqtICZuL6+YFI5JWaBVInQtJnpeeeE+n3zwHi/cvUNhNNW0IhnNdleLUdJqxWq95mZ1y83tDXXdEZKm8Qo3O2Zx72VaHP/37/w/7DZriMLj7/qermtodmtSaDF4mtUNt48/4fKTCz766IJHV2taVXD34SuYzMK0CUw6bNil/e4zmr1F2tN4eow5DYXRLevPcv2pcnKl1KvALwF/wJ/eD/EpkyGl1L+NRHrunt9jLwMavMOTdDwZJhoMjrYq8yPEayWlkBUmJud1gcF3fJhiZlLChUjX7UgxUhSOqA1BO0FjkieiiUnzla/8HH/v//q7eaakWDnHIAp1mb+TGOTv1WxK23VMTk/p+0hft6S+x2/X9BeR49jSxR5VKNzUkWiIvcamgrDbSKQzisl0wltfeZMPPviI4HtUUpyenOBj4HixwLlSEAWEwHRzc8Pxckm3q6mspdQK+g6TAqdHxxxNKrbtjpP5DN9WuElJ2zTc3NwSux1ET9807JqGLgRsWaF7QzUvOb33kGK25N2PHtFHhS0riqpkfnREt1uT+h6jNaFPPLm4ZXe74vrJFau6Zhc1XSp566U3mc9PGDS3DONUnuJrDNSLcUPk5nP2qsynsxpw3hzCf8KR4UtcX3qTK6XmwP8E/HsppdUzxKmk1Bf1nZ6+Ukq/BfwWwM995aspxgTKi3eh1gwTIkh5HLgK2QRUvMPlHggSI288y7DInI+YsrpIihMTPBfv/ZgUGk5PFpTlDDM5hrJEmYRK0jG8e/ec2WzCbrcWIDMmjLU446iKCqtlfLmzRjb6tCTEBSlE6usb2k3Aq57Y1bSXHpRicbSg3jRo6/EelHIEXzPRZ2LG6VteevEB77/3AaHrUUReuH+PRxePKaxoO6fTKcsjsXsb2IbOWJw2xN7TdzVVYXjh3jkp9iwWU6xVnJ2fyTxNGPnhfV9DCDQ7cQO4aXb4VDA9vsf8zh18itT1jrv37vLo8oZJ7inUTYMNPZU1XF9ccvvkks16Q9003DY1yU2ZLY94+MorOOOkAtJa5n8qhc7s0X3GMuDmI64rMC8ZJs5krhgHWgbScGJc6i91falNrpRyyAb/71NK/3P+9COl1IOU0sfqz+iH+NTPABkgO1gaqL0+cxgnCORxHXJDhmNt0Bnu+SiSx6uU0Ely/KgBU3D5+ENKtUW7GaaqidMSVVUYN0V7zf3zU+7eO+XHP1qRIvS9Z7utBf8NkeA9oHBFiSktVSqxzggPMvQoFWi2LbFrCT5yvV5hLh6zbD1Vka0TrMGpJbvbLVOjUEXJyfGC2bRA60SMHYujCRdXiq7rODk5xgfPZD4dJ043TcvJ6SlN3YgbrTNYA2dnS8rK0DctfWpxztH1HmccIcLHn3xC225IIZD6JNOjDUyP55ycn2Anhj60TGeOu+fHaHqir0lpCtahI/Tdjg8/fB9njODqTUd1ckxMmrsvvsJsfkREE1IaZXGDA0OuhPL/n6KCHjT3hpRzkC1K2hhVnlmkgD9F8vJl0BUF/DfAd1JK//nBHw1+iP8pP+mH+O8qpX4b+PN8CT9EochqkjbE4THNT+qoEIHxzYnD6rOFzP73Q2pjiCJ8SIpeV9x/+XW2m2seX7zP5C5UegJJU2hH161Zr2s2qxsKo/G9J0bBZUPoKQpLSIGYIPlESiVKiZG8LSviNLArbwm9w3SO0Hd0eC43a3bec7prWc7mGGspZlP63nN0VhJ3ChsirpqwPJ4RUytWDUaKrul0ynw+Z1fvxoe67zu2uw2vvfoKjx4/piwK7hwdMylKlmcnaKOYFBYXAykY+rYFrVkcLQgh0OwaurbFaINzJdPZkpPTM0mpbE9RWYraMQsTXKXxvsdoh7OOSlfEGLi5vmVzc8OTq2vOHjyk1JZiMuXNn3uLkOQkPYRwY4wicBjaOoML7jMhWeVGkQgsDjvacRQ+75Gxp7bKZ15fJpL/BvDXgG8ppb6ZP/cf8lP0Q5S2/tM5m4KRabinajLIA3/iOf7Jlr90NYUaYAjKgDG88OrX+f43L3n/k0vuesV8MSf4lvMXX0ZZy/sff8isrHDa0sWAJmGHTqpOeYiupu96XFmgtZF5m7ua69s1s6qiWp7SbFf0XU3bNAQU1m4JnRd329Uts7Mz7i5mRBUynRTOTo9Zr9YYLQ+2dYb5YkrMg3mHywcPJGazKS8/fMhyecTxcsl8NuX89ASiZ1JVhBixNtE2NXXbYYmcnp6yur7CaEtRVbjJjGp2RDmR2Z7T0lFpy/nxksIUPHxwHx/g7oMHPHpkUXWgsBM2qxXv/OhtXDWlbnqW2nF67wHz4xNC3qjPLNAI6QIoLZFd5XVNMY4bfJiKDSmLl3N/I2ZripzZDP/7opj+ZbwQf/dT9tRw/VT8EIe2be/9mIaYPMJw0GwKq42s1hbuwiEc9WwxklAEDDrf8mGk+XR2zNe+/i/xB3//73B7ecm9s2OWp3fAWo7u3ufB3Tu8+fqrfPuPf4AxNnvtKcqqwEePiWCUgJAhZOGG7klEHj+5QsXInbvn6HICsccZmYO0Wm/pTU93dUNn4BtvfQWcGUGFrmlZzhdcXz6h3W4xaJwzTKcVwkQdahE5rk9PTyi04eH9ByyXSxZHCx6++AJTrZkWJUopmhCo+pZ2u6XebOi3O/Enj4q27emSxmnH5NTS+l6K3i4wKQ3WGPTU8tbrXyEoWDeRxWLOrllhdcnN1SVV4dDWUVQV2pW8+vqbKO0ORA0HG33YzeyNVrNnWj55DWFwrR2RMj12NUGUQiHut3X0w+jLz7+ej44niTiSrA6PsZhN+Q++Mg10zdzYGQbQDkKJpy5xdJJ/I0kFkjNMT+/y9V/+dX737/4f3K5WnN/uuNMEZtcbtLW88uI9pmXFTb1DocQkU0HyAqVFpdC6yIQwIfjXzY7e90SvuLy5YTYvMEWF9uB9og+B29UtKQSOXjzHlBNcYQgB+r4TXkhZcLI85ubmCltNqPsWpYXjXtdiPB98yJv8iMmspG87qomjcJoX7p5jEuikCF7MMPs2sL5dsb6+YXV9S9/1lEfHotgvLCdnd7CTktb3+3RPKcqqYjItefnFjl3XMPOJru7BlXxyecXS9RwdTUluileGYrrk/gsP0Rr84I+SR1dqFYmEzDGRsZP5bB4B4JR5/SLYFwxcuEk9AgAbMR3KqbtKgrPvdZ+ffT0nm1yuUTb1DNQ0CHP3RqAiaBimiI0aQTUgMz/ZupeUSNHHgNKG8xdf5Y2v/zJ/8s1/xPbdD7m5WXN29x5H53dYzCfcObvDxY9XlBqWx0tc4UZymPeKvu+prAxN9b0XkUAup7ouwq6nLCy+i+Ajne8hiXvv7OiE2eJIbJezn7gyCusK5ssl682G46qi1BZnrVhiKOGcNG1DUTjmiznzo4pmG9Hak1KD0p719pb50XQck+h9R93WbNYr1utbYjLYomJ+PGW+mFFNK7ZNPWpDe98T+oA1Cm0c53fvc7O+ZWoKNrcNHz35iNX2hq2vOZkWnJxLk+zhCw+YT2dEZVAxE6rSIXC4XxA5ofc59l5lxFh/SXs/QApPdzTVfkUHsXr8Akjxudrkn3YN5PvRuGYYljU0gwbV0FiR81Tq8lRhqtQIpwVd8uYv/hqPLm94+5/9Yy4fXbC+uuZ0+wCzWLJcLnBGY7WhqqqnitphZk8Igaikk7jd7YT7jViltX0khJ4S8XGs+7zBy4qj03P6FGi6NsOUEaOECUlMdHVL3wg9tyoL2qahD57Nak293WG14ez0DmVhqVctXROgtPiuYbNKNEtRCcUYaZotfd1AAmcdURXYyZSidChnaTqZ3jyIHfq+xwfPNCuFJpOSzlfEYsLJyZIfNTvargXf4nSgahsWWnF2fs4e485FJ3nwLDD0m/frwoh5H6zQfs1SpnIcOhn/RMCO+SH6GYnkxpjc+FLj+O/D9m5CZjcqrbL544CRwyi/+hTy/KG+UGPEETdFklGoas43/vxv8sn77/DjP3qXzXrFTVszuXtOVTpO51PWm1uMcZTFBGcVhD4/XPufkfJpsx/yFLHGoowMtdIkdEYP3cyhLDJ5uQgjFSH6Hh+0bHhnafuWYlJijWW3WqO0om9rCmWYlxMW5YTQdjhtpQk18ZTa0m63rK6uxsi822aLDQ9FOUU50aUqA71vhad+oKLquo4uNUTd4XRBpQ1pVlCjuHNyTFVMqDc32BRJMdCHSDWbc3x2j6g0PoQxp055Ygh5Ut/TIyw1QlAUE0/I06Zl0YAD0fOQ1OQHY3wIUGgi6meBajtcKitHyBE6ZZesYVOl0Wx8yMn3DqijVO6AGrGHIUEct5J060KSmado5scn/MIv/wof/PB7bHcb2kePKFqP1o7ze2fcbG/HyQ8meSEOucF7WxYphIgP4gbgY6BSieQ7kjYoZxA3n4gl4UppInW7ltiFkVmoNflXOa26VkadpBiptyvm0zmbTU2pNGfLI3QMhM5LfEywvbmlUIqm76nXK2IMIqDYNvRdjzGGwjkCkiZo0mhiH5KcJNYYQYRa8VzX2ZbPGHDA4mjO6Z0z2vUN+IgrwVYVL776Gsen5/iQT1Y9jETMdRZZoBIPTFzZn7pDAToyZsegnYChJpMAl3x25Mpgg8kUjs+7nqtNnuJgtSzXfl5QvklZ2T0o9vd0B4nqaux+DpE27m+WGvLD8Zvk+7XitTfe5P7DF1k9+YSGJB4mdMJl1prpdEr0EVNYlBZZnnU2G+KI17kPonLxIY9JTIi1sdFoa1ExijVGgnZbszUrCleglSjxnbNgZEiWTUoGXXUNfV0TfUfqPaFrCH3DYjqhb2tMMcBpid12A3E/MyhGL1zzpgelcMYKOyilPH4zysMehLqgjCboCEGQnq5tqcqAsRZrDX1QFM6yWB5xW1YkG6hmhuX5A776i7+EzOM0onDiaRBgv2EPoOADvHsoQIcm4GGAGtYU9oKJEV7Of/754rfnZZOrg2OIvf7PaMNowcFhEa0ObhT8ZLKWbwrD/Rpu7t5qWOXqXWGYHS956fVX+O7mima14na9yh07i9GayaQEJYp5o2SolLMu0z0TMcmoctE1evrejy69MXZMZzKcihjpe7GBVgm8k8K1txbnCpx1+WQI4o7VtDRNg0qR3WaFTgqrIqVRJN9hioq6aak3G1TvccYQQ6BvO3zoCFG0sa4oSSnJwCwrJLcYE95n++UkhLToFWhH03VstltcMWE2cwzeJ9poXnnlZdhcs1495s5LD3j5q9/g7ouvE5OkDqO/5LA+w/F64LgwFI/7df3Jht6nXSntHx6VN0RSaU8P+Izr+djkwzXkpyk/2TGitR3RkoG/kIbUZQSgnr7SwBtPwp1Q6bA0GTa6GtI8lHO89NobfPub/5S+bui2Neu2Y35yTlE6XKGZTB3WaWwecV6UhaARXUfMs0FFXW4IfoC15O/W1C2uMCKzi5F6vQUf6LJNgzWWIit/Bp/1tu/wIZH6jkIr2rqhKCtmpWM+rfBNTd/W1DvJuauiYFfvaJoG73tSihRFQdCKkCKhl+6vVgpiTwzQ91GwaRVwKJxRKJ+ITaBrWkFoQpR8BfGt0TqxOJrxypu/wvlrr/Pa1/8itpggotOUT1oQDso+dzzcuyOynfbR+7P8Wg6DX0rZJCp/acj+l/FnYpPnp/1pWF+hjZXcfBA/DINoB43n/psPvm1o+Q5PfSSp4bXF0EY2v8n4uSImw4uvvM7pnbtcffwYenn96dGcotswnZaUpcXkHFAboSFoBZ5I33o5+iMY40hJRn0kIjplp90+kZzBAHUtbXVnjQh+UZgUsUbnobJCbopWjD9DkEZNEwOEHqsV9XYrcGYvg2dv652gPcETo8M5wZAjCe/7kXuvU86Vg8b7REjg6dFAgUErRcLhu46mbphUPVaREaVIUVhmRzNefeurLF98hfsvvYzRhpQ7k1GBSgLxSnDJqSHDGh+kKs/Ep6esJtTgzSLrKJ7zQ1IjGgCdEkElIj8LheeAqjz1vhUpDv3bnIM/CzsdNoCGfv9wnI05XwI8KCvZm0IEmTnaa2Ruu5steevP/SI/fvttzKZFtR2kwHQ2EZ1ifk2ltXystRQ9IdK33diW1loTgxeqbv7xXoFPsmjWWIIK+BREKaOApAkxYI3BaSuvbwwRhbaGLnhC36MLiwK6piEkGQETs06z73s0isJaTO6NpSgK+t4PAhN9wAOJBJ85Jjrhk6aPCasSSge6tpXBtlUroSJECJajowXrJ4q+99xudqJt9QmlIyH7SzIOTfjJc1aELJKDHoanZ2Hffa8jZo2Algc/KZk1pNN+gNbPBoQobkliHZY3Z5KBtIdeHqMZ+wgZ7jd9fpnxNBhoACP6olTunEmxGUdeuCIZi63mvPVLv8Qf/IPfZ7OpmRnNiy+8gLm6GJtUI2lCiUWbyU2Nvu9JIaJiQh8Q/VOCruvRMWAKh4qJLka0MTidhRAp5r+XdClRCRMTyUc8CRMsPgWi9xhnMU4KyL5u8L5jgE1F1AEmKXSU0y4h40kkIGYUKCV8jPSdFJ4hQko9U2dJhWFiS7SF5CNd27HZ1RQhkKzDuBKd64rHjx9TJCsPtJbGjxrdg8lb79nNN3inxEyZ3cO7z0ZxGArUYf21iN1D9lpUBpMSpPApCevT13OyyWHkFB90L0V5t3dgGphth4gKPB0Fhks+N1AFGCFGqcwFdhpGtEAioFiePeBXf+Mv8fjjR8yWlq+8+TrmQ8m9FWqsfGUDSyrQ9dJMGd5CTCKsHeqGmCI6KFIfMdbgSQQNRiWJfCrlaCSCbR+CiLd1og8eEwOeRGmkKNWlpg9eagAvM+iNMRgt487bzqON5OMqaZJPEBO9T8Sk6Ug0XWC3bWhbnxGLSF86OqNwruSorEhK0/c9TbOT+qeITGxB4SzTyZTNbscyN30EENvzjFS+GRozgggwoL8SAQaV1ec1csYglddLa41OMpt1WEtj7Ngw+qzrudjkYp4jip7DSD3AYzLjc1+AAAft4M96zYPqnQy9D+JZchGrLZIz9ISYsKbil3/tN3j/hz/g8snHKAIPX3iB0lq0UsTeSwrhxLOcvIkTUgRFo2h6aZDsCyZpgygFyYj7QB8SUXlKO7w/mWc55Jt9kDmdIQR8CAQibmLQTpNcIvWJFKKIeDONQTqwYsZT2gKvJN1JvYwS74LYHnug7wJd58W/JUa0TtItVdD4wAuccl5OMUkKX59PsJh6lDb0fU+bkkyMs4OHuM4PfzbNH5W045IxfqAUPsrDNQAKnwWqqBFcUGMgHNRCsq7607CHp67nYpMDB5t4eDMcpAeZvKP3G/zQ5/DzryFaazReCD5RoXP+npQgUFYrYvTosuLX/9Jf4sk73+eDxxe4yRyHgt5nd9skDrJKYROEXty2QLqbTd/Rh4yuxITRVhYjREyMKGOwVoppFTVGK4xR9FE0jCHtTemTkVPGKo0qNVhFVRYYrWhiRwqRru4JPmZTTY3VGaRXid6Ls1fTB5oIypUkbeiTlPIxelLMHU9lsGXB2d07zBdzwfC11AqEXpzNfEeyBW3TY49Ljk5OpKgIwvSUzSxpXVJZr5vEiUyaRL1E96RQSsQne6+zT1/HIbdPKYpBcTrY8EnS258dL8ThDed9LhRWeBY9OWz1f9HrDRZxpKzVzJDkUNTBUAjlnF8Jl3l+fEz50ktoV/Dx5S2+6/E2f02KhJggNKg+cHt9KZOB+07guz7ghwI5QFBiD6G1IijQlSUVmtBC8AGNwSQl7lpIRHSFY75cYidlbtp4qqqicGXOZyuMDrRpR1/fAmCdExzf6NEvse06Nl1DnxTJFJQ5DdFdj1APpLawOnLv3j1OTo45PT6mmlVyf32mM2eNSvKB1WpFILE4WnB2fkaKELwgWFoLbWKf1A2/ZkQhqYOoK5t18MpJI47+NBw4fHaI9BLUDANylpW4n7sTnqtNntBPPdEDif6wMBF8XFr6hynJcD117A2gev68ShqVDohCCiFtxdwYUjJV2M2mfPiDK55cPEHrYcP0Ir0yCk/mqrQCszlrmU1EPND7ViwuEJ8UrSQXtq7CFY5qNqUoNN5o6vWOro+EpkXjqZyhKApm1YSjk2Mmc5nT2XvPpJoQujROITZTTVdNmS4WGZJPhL5DB/K0jB03t7d4C66aUU0WNE1gV+fJ0nhOMwltuag4OTllUpXMqhIfA+vNBqstVVGhY8yKe03b9gTtcJMFy8UxKuVtOZgEDZj3iG4JojW4R4gAIqc0URpM+54HEpj2Rdm+9aNE9wtxnFAxQJKazx9W+5xs8rwzk/ATRPq0/1PvvfAUjM4+5nLzPi9TGXSfaTQAtSgjP0P2vcoEoCSQl4qknF7o2YInNyseP75gdnRMVZUy/SD6jIBourpmc7PCtx0amFYVJ0cQ/Yqm66jbXrz6tKKwGrJ4w6CZV3PsdEld7NisN6y3G1TStJ0MCUjKYE2JUw5dKKYlGGvp6KSAFP0Y01nJ0XKOUpqmbthttvS7ltVqxW63haQpTUVhKvp1Q73a0idPOXGcnJ5ROkthLK40uMJSViXrzZrV7S1JKabzOaawaOVEEB413ivK2Slv/Nw3mFZLQaizGZQnoXKzZixBVRL/cCUpoiIK2SZpotJ58icMPKShhhyClR5/r+RrD8blSN9kIIB99vWcbHKQowuGCA0DB2WY+SOeKiEPSh2e8/0xNr6M/KJVtoyTTR7jIMDI0eapHy2q/P08UEXKhVTbNhTGyXweenwSfknbttT1VlyjNFSFE5gLw67uWG+37OoaSJgY0dET2pZmvWE5nVFMCtzCMJtVzLdT6t2WdldnPo646RIjpXV7CkKh0SrSdUEE3VGTPDIzM/SoJELrrhVxc1VNiFFTb2ti55kYTWkcRVVQWcVkmExdFlSzOZdXV9xeXqETFNOKKOaRo+I+Js2dsxf45d/4GuevvJx9bRRJD7m1OggqOU0ZNiUJVNgjSWpoyQ9WcWYMQMP6Q5a9jExFufbN5Gwj+M+LkyulKuD/Bcr89X87pfQfKaVeA34buAP8E+CvpZQ6pVSJ2Mr9CnAJ/JWU0jtf4udkuu0QxYculnBY1MhRkDCRciNIUpnhuNrngTGGfIRKUfgTbeO8ieVQlZstTR5F8j1HizmbowW7RjggPnhC6ggpEaIUZMY66m0tlFJlZBrEzGK0NGSmpc2Wy1LgEiLtruXikwum0wJtFEXpKApH6aao5RSVDIWzeF/TNB4dC0hRUIykCN4TOqHINlFkfTGEzFhUeN8ynVYURUFZFFxd3eDbXc7pCxIe7RKV1Rirhdei4d333uX26hqXFNNJhVIa6wpAAksfI6ko+ZW/+C+zuHNOn12HZXsf3uPBbSFlFzMh1ymd5Xsp5/f5JJaG1uBqbJ/e4DGnJIpsNLRHZNJ+qf/5NznQAn85pbTJ1hS/q5T6O8C/D/wXKaXfVkr918DfQCzh/gZwnVJ6Uyn1V4H/DPgrn/8j1AglydOcU5EBD1cKpfLcx0zHjTFIRMhuWihpgIypXRTzdokwJt/UOJ4OchAeCGsHvFeJQuelh69w8f772CLbZGhF7CUf1Fqjy4rkE9v1luvbG7reo5VjNlswnRRYHemL3ODJc0d9j3BGGs+qb0gkXOGYzebMJpqqEE1niomu3RLaRK80IXi0NRiU2GKEQIiRLnjQGqtls8YYqSaWxdEEUmK73aJDw8QmJiZhdQAdxf7OKKrJlPWu5uOPPqDtWoxSKFfgnMM5mwfPWkFEtMNMpujZjE6p3LIfSswcnQfcXA1oSRLYMSUxH5bV3J+Y+etGhZcCiONszr0tRcp74oADs+87feH1ZYTMCdjkD13+LwF/Gfg38+f/FvAfI5v8X82/B/jbwH+plFLp8+hl7LuEw+BZbQ6r8/1mTGlvUTGm8inlVr04347QagbIY+6SjUclInPOnSGG6j8laV9rozm7ex9tHbQ9Td8JqhICRoNVDlMYCuMwStPGjt2jC+rtluvrW85OjmWjlwW6hD5ztgutiEHSkbrLSE9U7NY7tLcwMTkz1dJGTz1tTITgUUZRIMiJSQmjBFFRGe83yhENtGHD9Y3MFdJKM60KUoxiN2c1WIuyBSEaPv7wY1abNW3f4LR0FIcxJ0Uhxv5aW6yyWO2YzRdYY9FJjUDJYeR9alFURGkv+XgUPozSBoX4lA+Yumzk7Eif+T7DJAnBz/fC5qc6o/kpGU6Dz7u+rLmQQVKSN4H/CngbuEkpDa8+WMHBgU1cSskrpW6RlObJM6+5t4m7dy/nopI7pxjBqE99UtXBky2VpFTdKe05DlLRS/tRgkueEDYebXFswiTI6Ep+WJLGh0Q5XfBzX/8Ffv/3/j98TFiXMK6gsrKxbM5t57M5qjBEn7jwT9jsaj559DGls5zdOWU+nVEWBSl5Ygz0iPn9tDJoDD4ErBVdZLPtiX2gKmdYY0SsYMQ4XxnB5TXC0jTGoowUbkoX7GrP1e2K282Kru8pnKMoCqJLGG2kGdTVdB52zTW+91hrZGyN0hTGQUqS5lQVRVHmQV6GwomsaXl0jFMaQiSYAffI8fyQU4TI3lC9uGapApKcBgo92msP0Wh4WOKInOW0J8fFmEQAPbg6DEzHAUb+3PjJl9zkSWbRfUMpdQz8L8BXv8z3fcFr7m3i3noriRc5YyODAepL+zc9hI/RmgHIW/jwlZFYqEl4VG5GCPtQOj8pBZSyY/E6mISmRFa1QIfjta/+It4VfOubf8ju+gqbLD4mytJQaIc1FlcVnHEGfYIA8clj2lbTdA3vf/QRs2rByfGS2cxSWcPEGQKK4BXy/0quAAAgAElEQVSFdcQgqI4nsu0j202P3nhKa6lKQWaCF//BlHp815JCYjpdYF2BMobGt1xdr1ntGm43W7osYnbW4rLiKEVpWlVFhdEaY2XeaYwJZyzGCMV3OpkxmU4oi4qynDCt5hSFo0+G5fI0IyIBlWLenDo3Y/KGHSL7MDqFDAnmjSmEzJgNXAcTolxb6QgERkn+Yb6dexjB9+NaDYHxixqCfyp0JaV0o5T6HeAvIG61NkfzQyu4wSbuA6WUBZZIAfpFL54Ly4GQcyBvG5o6HB5ZdoSOJJ/ONyXn8xEkF05iGTHkQ2okeuV7rwWfz+kkg41FSGCLKW985WvcO7vH//m//a/47QaHIiVP0gUheXSQgnmxOOLBgwf4FLi8viGqRAyOTd+x+vgRRsGd4yWz6VTslxWs64au6YghsG5b6uARMZHBkphNLLNJhTMGoyGETpRD1oBzeK3pes+mblk1NXXXo4BJWRJipHAOa2TkiFYisyusFfLWWNSJ5UVVVeg8VKsoDEVpcYXDlRWmkHVYLmeE6MG4nF/vzbAhpy9j+1GNaym/itdkSjaPwxn3VF7rA/u3EWGRnHOI2G0ro2K22zXTqQwJOxTVfNb1ZdCVc6DPG3wC/CtIMfk7wL+GICx/nadt4v468Pv5z//e5+fj+c0ohdCk5GOpOQQDlac++3AMf34Qy2VI0nBT5EoxZZagRAat1NCCYCB4Dcfs+KpD2a4k5ERt0XbCyZ17vPzya3z/W9+EKK9iS4fVFhPE1tlax2Q6Y7k8Zte0wtVWAaUCUUWapuOT6w12VeOsEJf6pkWjZWQhAa+hj57UdZTG4GPHrq6xWsYvloXGKY3ShrrrCaHDp0TvA23XE0KPNYGikNNrOimZuFLm9YQom0Ipur7H9zlnn04oJ27skpZVmdmOBlcI8qN0JHYtf/JPfo+3vvGrTE/PpGej3FOQoRp2p8o214mxXTM2b5QAAHuoeF8+xZA4zNEZc/dEXbc8uXjCZFqgtTyww2Hx04jkD4C/lfNyDfyPKaX/XSn1J8BvK6X+E+APEb9E8q//nVLqh8AV8Fe/8CcMgmWdb0SWtsYYIekMLQ3H417WlvuheVPujzC5oWI4mVKQ25/kQTGZMTdgz0MET0PEiEbkbPnvpZSjDx2vv/kGb3/329SbG4xXJGeYTaYiY/NCmDLGMJ/POdrVhE7MeJLyBONRE00y4oirkKO3mEwwaIqiIIWetq9FEB0Czkj61oeA95Gm63FK4awsv3MlrrAYawk+ibABhuRWODFKxNvOCj9dDzVPCnk0iaKsJHcvS3HdskWBrabYcoKxGmMise+I2zV//MPv88F7P+StX/k1Hr7xJov5OTGZXAOK9E2adALdpmTYt6UVSidC9IKkGYX3Arno0RZuOLUPu53yCE2qCffu3cdaMFZmDX1Z/tKXQVf+CPEkf/bzPwJ+7VM+3wD/+he97lOX1IiyOCrkmnHo6uzHhcfM7BOzGZl9MxyL8p9nuMnyctIsCClhTELHiJYQNMJVEKUBh2C38mNNPhmEG2GqiuP79zk6O2FXXxO6nnR1C9OevizRKhexyoMKFE4xnRgsgegtfRCSFQg1VAhdFqU1Xdvhg6ftalLwmJRQ5qBNnd0KjDFiXorO6iSD0Q6jHEH1YnBqFTE5fJJiss3EqT70++GwSU4yYw3OGlwhFF3xw7egHEFrtM1+76FHtR315WPCzWPWIfLttuGT99/lz/3qX+D0/GVQSOqm5AHUSUHI7XdURleEuyNzoSIxCtIy5BoKgxDxMpp2cPYPjbyitIxI3EFy8FMpPP+FX0n4FipDeTKxUpoVQ7QeorgUn8PGHp7+/QsN1f2Q3si0NxHuxvz6Vhn0UM3vaxzJDRNY40RQ0AcgoK3GJDg/OePyw/dofEPXd4SmwxYOVwoxKkSP73ZoFZlNSkqtSSHR9pYuN4WEXCZFV+c9fejp2g4VE4UW30StdB6xLb0Aic7DkAKZfOEy6mGsIanEVFX03hESIwSXgNb3o1mo1oKilEWJc5bCFbKxkXEsKE1ZFJTTaYYm9YCrslldQeiha0m7LXF9zZP3fkxVTlmcPsjznTJWkuT3YYT/Bkw9UymGwnL8W6o91WVo9GTIZTCWGrwvR5X+ARP1Z2OTI6fd08xCNeLcwMhdGa1XxgjOUPFk+HAvdDU6jXNAY9IonbDWyGiPmON4nsaslBrlVIIOBFQIEDs+fv8D/vAPfo/3v/9djucVEWi8SNKi93RNCyoR6eU4jhFDRFsZCGWNo0xivONDoA8dfZfx8xAwWo0Q3l79pEhaIixZeK2NobAOpwSZsUqKSmMrrDc0XYsPEPJ0DKUGcGoYF2jEFcAVOJsRFaPR2QojJBldE0Og7zpMoUha0zc7drs1RiUgYPHcmVecVo725glaGyZHx6AsMYkF98gqHDYtIlfTueKPQzPpMEY9w5k93LzPyuPGqcw/bXTlX+SlkGJRW8m/jbEMTq5GmzzeJOaO51CRW2Sar7yCQrgUIR+VJp8DkR5nLGhx54oInh4VJK1Hq2DRaSZ87CF6TOhZPfmYq49+hAtbbGppNy02pw/BB6IPRDUogzIhbHDg1UoUdpBHoUhK5H2H2DuKJlPS1phFzWaM+MN9USlRuIJqNmU+maJjpMhDYY0z+BhQiBd5ih5t5L3FEFBJegTGFVRVyWQ2GcclKhBBtkEeTu1yOz6CikTfE0Lg9upS7okx9NGjrKKYVSzmFckkutsnaAKLk3OaqIhoSbOym9hQJw3AgdYZG88ja/alZ87dD6Lzs9K4w0j+xVoCuZ6bTU7Oi+MBKUGOqn0rN6Zs7TzelAEpGSp52Lfss2JcDQ2GOP6MMYLk+URa2UzI1ygVSLGh3d5C22CN56UX7rIsEn57w49+8EMWyxOp7lPMQgrBukWQkQhxQBpkU0cgRPAh4fuISgZrJePXenAJE41mjGIToZUeJWJGK05PT7hz/x5H0xk2KlLvaZqarmu5Wd2wvrmhaVtsUeGsow+B0jrQEVdIijKbzZguJtjCyfS8EJBAktA5VqSYRCeaErH1tDFw8fgT+q5HTyzaacrZBDudoJ2T+igm6utLkeBNTwmZCq1QmdocM1KWF0BpBrKWpGAZNMiY+l7EPJhIfXFK8nnXc7TJlVA2UxS/QzVAeirjqlKQpCS00xhkQTLbJ0fjvUI+ZusFqeEklYn5ZJCfJ7m2zJJMKC8iYFJPvbuErqG0Cl0YkpmSFkcslws63xFTwjpHIBB6IIrBkHiCyMKEmHLTSdKM0jlsED6Iz3TdmHogkisysYcLgXq3G2HJ+XzG0dGC+/fOOX5wzvFiSYml3zasVrdcXF6w2W7FCUBrtBcL6FI7SfWsYTIpmUwnTKqCyaRCGYP3Pg8OkxTQWI02DqMNOoJSAeU1F48esV7folXAOk9MnqqaMJnMZDAZGo3ChI6byycs3RTtnBDdks5NOflHDygLgmCN2XpKJCxD+qnyw66VOcDdYRDLHObmX+Z6bja5GHqaQdU0XqPBzOHXjgBreuoYVGooPYfUAynkBt74MzmeQoyHVJJbTPBsb59A3DEtDE5DygZAoSyZTiZURcHHH33ES6++gY9exMQkbIa1QpCNrrWQsYw1GYM2UlPkh0CIVg2+a4lR9Jy979k2NaUzzGYLympGNal4+OJDXnr5IfP7Z8yqKTZqum1NNZvRx8C23tI0NaFvCfWOwklxK+xHzaSyVIXBWYVRws9PPowSQG0HUyODHWi1PlCvt3z84Ue0XUNZakgBoxRFUWFtcRBhE8YKe/P6yWPuv7jAqyEVOeh8DkfpAA8MhC7GOlMeuOxMJg9EHNsfXzY9efZ6fja5VuI4KzszH1sDUSc3i5LKx7sm5oJy2FCMBpMCQxlrMEaKVaVz1Nc648Qp54O5oFURQ2C9usQ3a46mBscwUULJ0ERjKIuSyhXs1hd88sknnN87F6FwxtrJxClRxwhCYpTMHTJ5IxljsMYSfU/sNZ1R2clKU0fPYlrxwgsPODu/jy6mlGXFnTvnPHz4kMlyJpHMJ1o7oSwLJpOSo+WCq6tLmt2G7c0l2+1mHLSbUsRpUNGjk8F3NQm9n01vxMTJGos2bqTuet/yzo/foW1lUG0MgRQ8ymiKyRSbTZTI/QUfAjol+rZmvbpidnJnDDQkQbiGZJF8b5VB3K8U6KQJcQhocQxgsGc4DsXmU/vmmZz9067nZpOjBBVwVvBjgfRyJFD79jCkMW8f8NJ9A2jfHh7a9sIrz74kZq8eTxkHV4jRe73b0DW3FCZBNv5Bi/uVUhFrLfP5jMVshtaKxxcXUgiWFTpB33VDlSA/Y/AgSSLxKJzDFSIOdtbitcjicOIYYCLYWcWkcpweLzldzjG2pCgKjiqDDS3xpqMLgb4P9N7TBzEBstown81xRrNZXeOT3ClnLU7evJgQ9RpDQpms9NEKa4xAhWpI8RJ12/DeOz9kfb1mYjO/P7sTWOcw5UTa9DmnV7nEN0o82dc3lxSzGdYZGQwMOTeX/FvB2KswmSQnjTuPdL3FrUFUYEZcCPiz5+bPySaXjeFDEOFCOJS2Sc4Y8fkYGzyvJYcb8rfh6BM2os4ojLDXYn7aQ4roJGMPI0Pl3xNjx3Z1iw49Rkt3NOgcw5MiGUWyhmoyYXY0pZg4bq63/Pi99/jam2/iqpJIDx6i13gl1lhD+l9kRqSOSeJZ5/Fdh+97fAw4Z0kY0LDZbLheXVPNKpza0itDv7nh5uJDog9jROuDzASNUWUrOE/TNex2O4wxYw5gM/9d7qQiKkGTHIK1q5gIygMabRXb7Za33/kxt9dPKCiF0agi2ubWvdZiYxc9IfQZ10+o0IlmMwa6XWJ9u2J5cmespbKbIkOfeijKgYybD8FKqBgpQQhqrGv2Gt89ujJ8/DODkw/H1EDAf+ZPGQhbY0o3CCvQgrogt09njagxMuQ2HOKpQ2av9l1oqxTr1QrlPYXOAXi81PDTSUpRTGacnN9jufyQ223Lervlu9/7Pl99/Q0KWxC1weuAikOhlU+VmKCTDeFjL+qe5CHDhtY6Ygp0fUeKiU8++QTfe0pXiCQuQlkWJKWYzWaEGFit1/jOYzKvJcZI23eEEGSuaC7eg4qgFUYXkCP4WNQrsbxLCiKaJ0+e8O57H3C73eKMtHF0vm/KaHRRoo0VD8jsiKu1IhJIvkNph06y0ZvNiuXymGgE1jUHqJfKyJesO09h5VorQkiMmk+1x8Wt3RtNfZrj1mddz80mH1MMlRh99IbjSe033yhQzgr7bJA4qoZEzaJHmFBl/eF4U0ky+k8L/TZ0LdubG6pk0E7+fMj9QghkWB6FppwdcXr3Hid3Tnl0ccWmhtvVmj/+7nd5/fU3WMynGNVLDhm95L0xYZB2feybPOxWjGKN1ZIihF7MgfoOraB0jtV6RQBCn4vEmPDB40Og63uqqmK+mDOdzahjKxvBJKblZN/CJ9tOGIMxNssII4pISkY8WKJmV9d88viCx0+e5FlM4i6WYkKbHEW1haKims2QgboR7wPGSJIWQoAknWSbYLe5wXd3MdMlMXfrk5K1CHnDD7zyoTba7wU1St8Or2db+YdY+uddz8cmHyMLUjiqDKVqzaBgPcRO5Xtkg6sxD8+NhmzpFoJgsyo/PQpERKHIqUTCqsh6cwuZ4hqssPyG/F5QkHyERjCuYHZ0wr179/now49Z7xpCgOvdjm9/7we8/vJLnJ0sKEtL8IFCGfEuiZDwaA2mlCI4KoVSET247GYs31rFfD7BGEcTIk3TkroeGyTR7lJEk5hqxcIWzItKnhit8EnSmKIocsMloWOP1WJitO/mypnZA08ur3j0+BGbzUao30ZLUZgx7bGtbiy4CW4yw2iFDy29V8QoqEwMQnozCnTsUIin+nRyIiNiyGadY/0kxbmsaQ5r4lI6bu3DlOTZNv6nFaGfdT0fm5yE0mlMWQaToRSHjS1fg5INI+37NHbtGI7Ugc2Wc5GYzTWHiBG1PBA6KlII4IIo6tWwsBqybZpKCp000XfC74igtOXo6Jh79+5zvFxyebWibQNBKTZNzw9//AG77TEPX7pD4eShtUn0lEmBMfK5mHNXyK4AOuEU/z917xJr2ZalZ31jzrnW2o/ziMe9cSPuzaftKoOEKIFKqgYIFbKEhLEwDcsdGhjcBMsdRNk0aZke1USyhIwE4mHJPWSBkNzEAiNafuCinJWVWXmf8Trn7L3XWnPOQWOMudY+kTdvXCujpMiVOnkj4pyzH2vPOeYY//j/f5DSQIwdYHPsNRd2fU+fBvoKmmfykBn7E30/sJdIOIxojNydRl4dbimd8ODhA4bNYDbQQeiiN5ZUyBiN7e7uwM/+6A95dXNnwSJarh6iucdGjDFZqUQxJwKJBoPmMpOnyViN0chvWiEUZRIoVAKZm8NrdlLtFNNCDuKoukGDS6PPP+OSMyLNk0X9lPj6VOS8CP2VSVdCiE6tteKm8ZTXkYV6FgHaEWcDtQCaH8d6tU7aeqMM+ag+lEnJeWQ8nRic5KHVrCmQismGBUIgU8xUUpWYOq4ePODjTz7hi69ecZwqU4zMohQJfP7iNa+PN1xebvjg4TXX2ytSCAgZzTbjp5RK9fyrVnvvXUwmwyMxjidub+549fqGgJCysguJUop1LTd7TqcTX949pyr02x2xt/Hh2gVKFm5vJ0LM9L2yiwP4oIDXt6/47MvPubudqDnSDxs0NK2lIdsxBpJE0GypHXGRJYq493pVypyhOQVLsp8Rm2ZXtDKOd8zzkU0cltOw1ELAGz3aeENNrb+iX6UaHdg+2/tpyte1+b/pej8WuTcBbFEbQ69V1NX/3VT5nqLIGSsRfq76XhyctP2cPY0syU0lxMqrFy+o84ikjmDOQ/b9qj5Eq8noWGbhxBTZXlzw5JNPePL5c17dmalPiObnUiRwNymvPnvNp1/ecH1xxaPrS673gSFiHiwEarODxgqtOtv0h1pNurbb7FCJaCnImOkIJLUCmBAZtju63Q5SRNKApJ65KMc5M40TcymUWhjrkRhfM8+F43FkGu+8vkkM3UDoEmBjzUstS1oXkiAxkfPJG1mydGvnKTOFyYKAOMU2rn0LgEBlurthPt6yu+iowcIGzV9cK80upC1ZC1jBhhksgW5NV7+u2/ltGkTvxyKnCR7sTS+GNE1d4shKpYALlsHeeBvRF0K4V32jq6p/zXjET4kKZKa7Gzp1zEaqk7V8ZAuBeS6oGDaMG9fPJRM2A9ePP+B73/8BL1+85jSfuBsn48CHDlElBGWqM58+f8UXz1+w6ysX24FHl1dsNzuC6RgM2ixtenI246BaqVKZKfQp0bs2c+h6csmccqbrekjCVE0ZlKcTL2/u+OLL5+aKGyyiqmZ3JBNvRhnzMMaO4GMYRYNZUGhimkbmeSIiJsCukVJnRJIN71JhGjOJ0Xj4Wa1z2kdSFxcbO9FCLMp0+4ru4gEZt4SriosDKN7mb40fW7u2Eaw7jOHmIvcCmeHz3/56Txa57ed7+XfL1/y72vJ0WvRed/Ea9etys8JC+mFZ5QGLtEUr8zwyno50KFoLRRQkEpq3C7ie1pEZEUrNqAipH7i8vubJkyd877ufcHN4Rc4zUy50QexYjwHULZ9L5TjP3B1PfP58ousGYgqmvQyBOdvCPY0zxWVqFxdbhg62amb8QSYGT7VCn8gBclWywqzC68OJT796zuF0pKrSDb01boimCVXoukgU6GI0c05XD4mjLzX7xAy1gj5GkMGM9q1ZpEzTxDiO9GJ+L0ECNUeI2QNIa/5ALIXp7s5E1F2gYs5g6h+gLIvcP3W1m776q3h7TVpqt3LKfwVZiAa1gUFWRtqxCL6a1qghLhoREqqz/Z47bqkXqmARo/FS1IlTrarP1Tp92XWR3WCK+RjFOdeAN1iIJrAQT3uii6Vj7NBhw8PHD/nBn/gBrw+3HI8n5PbAvjOP7yKClkQKkSqFooJKRy3CcVbqcVw4OapKEZtJr7UyV7UhsF2Aix3dJlEkMkm0HD0kAkJWZcqVV7d3fP78FcfRTIg6j9w2otEQE/NNsiaZLfBgcGu0bmdxSnPfdUanVRuPsttvONyO1nX2gDCNJ8Zg06qDCHMX6bS6c7AuOTsqHA93FBWG0FFyWUbiVFm6Fi2m+f03F4FmwKqsKUr7Ok9b3mlb3zWe/xfwU1X9c/KObeKsBGkfenvO9Qa0yC0NuPY8vfmpoKvoouSC+ESwZi8mUcw8BxBVptO42DYvlSysuU07Hez09A6ijQavpZC6xMXlBfrRR/zJ4y2vXnzFVwpooesa9Gm/HEIgkXxmJqY6krJ2/nyRJ49kihnmHI5QpsxtFC52W2IfHesW7w1kDscTx9NMJZA6x8N9ylyMAarNRQoSzAUgGsrTTpEYo/tGWvHZb3ecqNScbWP7FIs8zeRxYj6OzGEkdz1VHSuvZ/dvWTAGw+bxyDydiGlHKXWpi9789NutF9EFXanVxi82hy1YC08bJ2kb6l2iK38V+EfAlf/9v+Sd2cRh3Z7gPuJanVNhQlgbFdJT67REPwNEjKC/tPZr46O71jucNRbUsOJs/WJOx6PZrbloGK/uQzArNjsUCtSwjFNRNcHynGfjhQwDu4s9jz58zCff+4QAHG+OHPKElMw069K6rqyOUDEKIXbWeCpGUIqq1HqOGshCJ56K8uLmiJ65fsUQFkhSUqALbXG7SNnfSxSLuMYTMSwkwsK+FK02dqWsQo/9fs/x7g5Yg4BUZR4njrd3dLHn1Hfst7sl31ccdVHXZGollEouJ6bjgWH/iCYGWc2FDEkrRZ3qK1Sfel194zSRc8PGz4vOZZbT25bWW3/C3uh3gH8H+Jv+d8Fs4v62/8jfAv49//Of97/j3/8z8ratdhYt1fNBpHkX+lydhqy01qf6y/cpBoIruH1Bu7EhwWfpiJg6PWALZx4nWCr1ZoDgR6kfvYA5QOW6dB0tx3aP8BTpNxt2V5c8/eRjvv/DH/D02Udc7DZm2RyFLojlrsSFbtAlG/GdQrCxhtH+PgyDEblSou8SQ5/o+0TX9+ZvnhJdbF8dIUVCMvu3FH0Rx7BEaNOCKl1UUmhfkMTU/V0Qn3hv3itB7M/DMLDb7ZimiXa0xhDQbAO68jwvBf/axLsfn0WVpDZd43B7a/NCfVJH62W2VG1RQi1qf/9uq6W8g9ve1xtr8511PP8r4D8DLv3vj3mXNnFPnmL5ddudcWnsmPmP8TyaRUXTD9okj+wL347bEI3UE8TndLr7e63KKJYzdiJGdS02A7OPRsENpbl16aIasqCT7Hk90iUXHSBCjULaDlx/+JjtZsPlxZ7QCXz2KcfjyDwpuWC00mKFKZ6eQLhnWi8iqB/DtRRILXoFkIRq3xqWnldbWtYW26oysucICBElOuTaB0EkE8Q4O+JQbUwQUqRWw+v7YeDi4hK+/IrT7UjOEHadY9s2sDaG6HrVSleDCy3Oagyti4vW8Xh0pMvsK1TMsqI5n8UQbLSLNjpHIIS2ae6DC76ulv++k5xcRP4c8Lmq/gMR+e23/fy3vfSeTdy/qMET8JZ3B+d+LxW4prPICx53rRBpQ2x9YsFCxhc7/oJYy7v6aL0o4oOkMiULuRQ7ObwBZDmgbyZtMcd80YOYlfQ4WuGI54v7/QW7YUvfDYQukvrEV58/5/D6xJwLU51dHueSOV+UTYTvN9tzbaW0RCcGXyvqnunifS7rlLKoqMJyWrW8N8XATg0K7Dyy1zqDuxjEYClX6Hv6jXVbUwgQjfTVpcg//kf/kO3WkJrUJVLXEWJ0BMp9bWrlzc6k8V3M92WeT6gWcxZQXd27GopmLaHlM4eW2rF8nueLeUHW/ftvA1m+TST/14B/V0T+LLDBcvLf5Z3axDkd1he1UWvrUlQ0k0jjOqjnbKBS3Lqh3QgrhFr3NEZzh22bBswoU53o1I7ikrOhMWSCpLWLWgGad6I9T8l2nM7zRKmZkBJlKmyGLXEbiaGnBiAltvtrXn75itevX3F3+xqdMzULuihfQDo3/ZH70co80QvzZNPf7J44HdXumLXPW14qWIiv1RCWFNlfXPDoYs/1xQV917kl9AGpxtlOXcdmtyVtt9YLwKzcpmLNsKsH1zx99hHj6UDXd2Y81HXLAm9MRwksxWEQIfln2IRvcxmZ55GQhuX3WsRvjb+1sddsAptV4AoXqirNysLLegt8P1f13r++jbnQXwf+ur0A+W3gP1XVf19E/mfemU3cmg8b0CFL1FZVUjTGoAmW2wLMEIrn3u1o0+VDb4XKykiUFb6qlXmavFliqUHj9NsgqjW/tBtdiEnIWb0gsmh8GE9sNhtihSENhBApvbLbXhAeJS72j7h6eMPNzWtev3jOeHtgHo0OW+eW00LX9cQ+GradzCMmzzN3t0duXx84HU8+UrxtNodbRdwFwBEmH1LQd4lht+Pj73zM9cPHXO4vGFLnDmEzUrPRjFMi9B3VYcRaYR4n7g4nY0Rq4IMPH/PlF4W+b77lnUX1ZIWv4f3BrC1CRMWw91oEsBZ+qSNznhi6tZUfQjKvFlVWz8T7qcjZGlz+u1RPDkAYlfqbyVq/DE7+O7wrm7iGi2M7eYUNvQlgoLkXl9C6ZOJhTZ2QZRBUQnzAbQirKY14aqO1EDC6bSmZUoVYEhqC3w2hllYMNWvgSp0rNGdctYbNy1cvmcaJPhmJShVSTGyHPUl6xjSTUs9+t+Pxg2s0F0o23njJxT8uYfBFrgFX/xfGceLu5o6f/finkDOzQAnBNqbb4kWvN8Th04BACOy2Wz569pTvfvIJm4trttstKQT3HIcuYHQFH5cySWWaJhsk0EVyFMa7ip4m+hQZukg/9AzD1jxb+o6YzNYvRTEL6BCIXVoCCiGi0tFpINTI3eGOMHTEZCQ48fTT77gzFM8bQXZvaj1jILbPXRUTgk9NSX4AACAASURBVBvq8y7SlXUpqv494O/5n9+dTZzfl6/N6/BoqmJZ6oKhnxccXixaKQW4iU3bPFUNflO1heQ5dlWT0mmt1OLYcPBNA8smMVGGcfOCRKrPDQoh8PLFcx49+oBSMrVYlA8xELtI0kqIG7ok1KHzesM2sUaPwmqvtYilJ+riie1knPE8jahWbm/vOOUC2fTxAbFx39Luh50Iw3bg2ccf870ffp8PPnxCv93SD+Yv3nXe0g9CkkCeZkQg6WyQrZyIjr2GWpjyRClGa+h6k++lvrexiC5TbMxFiYGYOutoSgsQESmRWOF4+5qrRw9W+z930Wr9DPuczyHUlsp4bbasB/PQ9b6psUz/GCP5u7uEZdTd+diMn4eHdEFZ7i9yexBjDfobXqwM/Ga0xRUELbNZSJRqWLRY/lfqjObmnW01gHVfs6dL5kVYayaEwHbb84c/fsF+t2NqhShNm5j8/QRiAO26FdqLEU3B58tjxWbJ5DxTa2FTBuY5MwxbCIHQdXz5xVd88fIFelKie6MQgm1a72JeXV/x5NkzvvOd7/Lh0ydcXFwSumQm/yLmUJuS5b2qhDAbYSJjk9mqkkNEZEanCe17iIE0DKS+J3SBbuhI3YDEZF+pQ6It/EYVUBRyphIoKIHM6dVX1OkjQr9HJXl/Qxwtqihx7Xf4Z24NnzX3FhesCyymSeZW/O6aQX9sV4u/ivobu78z2wJtBeY5br48hhcsrSNa64y1AdpAJkceWvMhmiqn6toVrTqhNRm3vdrv2CKfUS/+wNh6zR324nJvk9uOd6TU0/VutxZNK2qzjSIhdYtqKcaI+qDYxrmhFDR39pqKiZSPfYaYICW67Zaw63n55VeUwwnJ7rFuBuRsdls+fPYRH3/3ezx59oztbkfq7fWkFDyCW0phvHk1qZ66sFktPmSfwlb7ntz19r2uJ/UdIQmxS6R+oBs2HtVtEIA4exRw22zrVWi0iWpzPfH6y894+PRPUqXpbaEpP7WJVM5QlIWHFCO1zF5jWV0SxXjvVN5tuvLHdklLIVrlfM4gPP83XVATo3c3eM+AKLwZoupee667EreHwxsO5zrHVsho48ZIdcwWN90q9qWFUhqnpixsu+12w+k4Mk5H+k1vogOHwbo+UbNQg3EygpzxRYLpK2M0f5SaM9p3zv/ISC4QzS4vpY7tZsuwt2Gyrz77knIa7XalwPbyguvHj3j2yXd4+uxjrq6u6Pve70dZege1FmRSggYkV/DxjCGYar66wGRIHXPq6fsNu/0FiNL1PV0X18Kz60ndQEydzVZq0K139s55OYIiZebmxZdcPPyE0G1pDFP78NY8PIQzu2dtgERdVoEsrsVWG5WFzfiLr/djkfteNly78U7C0vxpXc6cbR57SjavPucmYMakW9LyOHvUqsV+VtV1sbakXQ7hhKtCLhUpQtRI8oaUeRhaatOeQCjeDbVR2yVntFRCAg2VSiFXOy1CCNRc6JKnLgT3d8Tz17R0YmuxArC9dvN8tHlBoR+MbtslG8YliV0cmA9HpppJm46LB9c8/PAxTz56xtXVBcPQkdpNkAbXVWppU5sr9TgxjSeqCP3FjhAjpeW+1dKBLnZshy3zdKSLkRR6GzwgwbutiZAS4qb7ax/DIGEDPiJBzPpjng4cjq942Nt8tekso2zNrMXmry16UXcmq+4lKYvPo5HevnkaM7w3ixyW4tEbHRYZsK6Ymneeb2v/cevn2eUoC3XBUd+c0htCcPrt2n2xaI61xaU9nkNUWCsbTRbJW/qiLcIEKLYYUuxctna/OxeDkBaFkXNLtC6pFWoFWgwBcdGGvXV34Eosgt5uGEh9Ry+J/bBjPJ7IZKQL7C4vuHxwxcXVJX3fu3Ho6k7Qjn2bAXoi39wScmWeZrJAScLQDzZ8oCh5nlw0YoEgBCsq+2EwGLFP1hhqniziAUbEG0Ms9/h89io6c3vzJY+uHlKW8e8rJLr+vCyfX22fr6Pu4utCBah+Ir9lZb0Xi9w4U8UmTVQcwVBbdN7GV8TNgfSMN7HyU+yBGpZdXd/ZxBe+CdQFcMULmxDsqA7miUh1cS1hUaEHjY4IZI801oShFKQEKK1vZ5tEMLZfDIKoGB5e3XjUoTcrFbw7W4ykBCs+BPYjUSKSLGdPnZ0EQxy43F4yziNjHSHCsBnYX1yw2WxIwU8Lr2GqKnnOFgC8vVq0Mk0npnGCFGE6AcqslTLOzKfRaAUlG98lWprSD70XnomUAl0XfaGfLVK/DBXJ/uV3SDPT8QXTeCB0l07dsM9/cUFT95QXH5Sm60K30Y+evrg9tDkrfrOI4r1Y5Gv0tDSlRea2g1tm3ngaa8QMy0aAlte7pYJ05HJaWWoeMJYC1THtFIPl+FhEFre1oH1wasoZ+zDs9Ym56KBSbFN2RnNqipUQClKFUKHmTJmKK3kionF5b5aqGGW22aWJuAwsCDHaROTW1NqlnrrPnO4OnOaJWU+eL9tIlJSSgYsi1AWHx2FUa2CpCHGzsY6kitMGCuN0YirFpmjM2Z3HlJLNJyY4zt7360I3FMmFDL+w6+hlZRUTp4xHToc79g+u2zmzTJ7TZcRhOIMF/VQHh5FlqTQtKLQP9xdf78kixyMtbneQvUUcl65niIrxV8pCoYXWKPIFYliI5Z/VHWU9Py6lmFUyzp1WMeVMCiDOFHTPRSOIFVQjofcR5mIfVBTL9UmRuOmtXd33pEYoE9N6VgGtbueWJ/MuP1VCycTtYIWnCCWof3h2pDdymhXDhix0kug6U/EjENiQamIqNiWi+R7K2f+a/I1aCUCuRpOYS6ZSkC4QzUSOY8lIWd0SmtNBzpnXd7fm8tV3puj3oGBMSivoozsLg9czpYmehS4N5Gmm1MlOv6lyc/Oa/fXHxOi9A1nljqXMNActXWyffYmEpvWNVl+1mU/6K7HIHVvRM8ma/7sVpGc/uTSDxKG/SrOoqHrucCuu1zyXSVkClycXPohxLqIrZQz18I0R2002uLHrOtNizm3UN5RZiEdj1rWCsdRio2+C2V7M88yc7XdCSpZv+47WM0qp4PxvL0Zx/DcEp+ImU+tLtPa/aCRVCwKI0YOF4IhQo0RU85opxXgtfnM1iMnzSnCzI2c7lkrJhTJN5DlzPB65ub1FMQpA5+QsawTJcthWLBCEEI2L7+b6dtvPIrwKFOVwc+tDbLFJH83Orwlc3BCq1RIrlcET8LMmoJw//i+43ptFbrKs5H9rBYbt4sU1y84s1gUtS8OgpQqNSCVi41Puaz/9w6wZreb+ZCNJnN5rR8QiZo5uf9w0n9EnqFELJVljKvaRoiyLqhTPf1WJitnLDaaKlz4ZeUvNZ6Y63h7Cap3cnsvotC4+PpN7ibvQ9iRKieRsGL4gq6tYQ2m0It7JVU8/1iKwZU2mmKoKtVTzaJxmsg+8vbu9Zbvfg/pCTz7kt1ZqbkiKkd1a9BZf5NapFINkayVIQXWmjLcc7p6z7T/AFu6aDi60DVhw85WNyhLlFBN/hPB2UcR7s8jty0aoNHsIdbA6LPYEfhMEL9jakWU/J6FxH+qyuJtfeCs6BZjn2T70YLzz0BCCGK0A8htZFxz+jeNQ7FjXYOY7ORdynsybRQQpLlIWa76kGNFg3PNGGKs1e33A8hzh7OQJstKOGu4e3YG2qrW2kw+uLbUsHVzNTRLm+Xit1FzI3kyZ6kSVSqpYhC/FhteWilSbUqdNcNF1fPTkCbHr2AwDnU+u62Ik4vfNLSbslvnrBD+lHCkRCwiiShKlULl5+SW7Rw9QaaeJoS33yFgLI9H+bbUI9Id0FCosSqOvv96TRW4R2OwKWnpRF3hKW9UdG9wm3uJVik93aLYGC4B1drNKKbaAEIjCPI0mcqb6BDg/RbQ1iewxqjeTjHrbKtfVoiyEYNMmNDOXjBKJkgihGoYbcTdX46KL8zVsVGMhRZtCIZ5fGnEpELrQ/F7X5xL7vShN7NCaOMnukTpun5VxNNYfJpqy9ESNfpzdPs8daeyeuRWeSKRPgd1uvzTj+s2Gu+PB2vZNdRRsEwRvyiw0DI+phrYXQgw2V0mL4ehRKJKIIoyHkwWarvFXhCriA4abt2W81/20vklh1TN5SSq/Aov8vKsp6lzrFpH9O7hDbIzJI7NH6Dc88Qxe8ojgC3zhKmMRZp5ONIKueo5nOXWLGA2SLMuiNqFLdnGtRxkKUQKzVjMBQmz2zlzd2bDhPZ4vz4kqBe3E3gdmnyYY3CjuVFXmSvV+SDPubwV09IFYTUom0uRhkZQsRQtBSNl80Cfs/VWz6mLWQtXs1N3MPM9kv4dSLMKH6DuoNc9crdQW91LnyJvGqoYBqGBWFcUmZbc+QAkKoYca0FA5zSdSd2Hfrw1J81QvrjQBewsNR3HkbTlt34aSvyeLHHCVjJ7tTEtT5GsSroZitFy73fQ21LSlJ8DyIbXf05KZ5wl8Q2ltM4nExRaNHOYNGzEGolLMd6VtvKpQlS5EjnNBgtk4mAi6Ij5sK6UE1aaxCZnUdf6689o0inFpiRCDFafeFR2cQWiyu47gdnGlZKcfmANXay7hviadE8KSBDabLTnPzHMm9JHjeKSMIxnzRy95tJRjLpRSOY1xaSjdnQ50m42JoR3JWJaVnAUoMbWTRXSDT2N1rntMBOmZoxoFt0COmbvTHZcX10g2pwL77K13YY6BPy9tU4/gbeBYeHP+ztdc78ci9+rZUoXmUa7O7QhL+/78aos458wwDF7RsxYmvmrMp9yLF4VKJs9NxNwOPBNfGEoTzDpBIIbOorAUW+xiaEXNnsuWar4qOVMY6STaVOZgKIJ4iiJgj+9uuuJ2yOesxOAkktT1VCr9ZjCIMzaPSGi6yC4lutQz52kRXIt3G2stPonOA0BcRQ2p6+i3Gy5qZh5P3N3ccPPqBdPB2vzF3bvGMhJdXfXZ55/xyXe/t7AUpdoyEzcRBfEQUC1NCZA0ENtc1eARv3rjRjC9KxPT4TU6fwg6+Htw0lxVT5/Wz7k19AxaNV6SsUTDrwqECA1K07M/r8Xnmj+e6/2MPtq337D/qtrQZoebWsEJWApUC3meTGjgWZ39/ypibosqdI1kdC7ExDaNY8EBgyRPpxlxfWfoOsQ3qpYCPgupRe1+MK/w4GhNjJ7Lx47Udwy7LSEG5jyjrGr1qN29xokVsGF5zeL6TEtP8gKvreQ3qwGMh5LYbrZcXl5xPNxw99VLbp+/5PbulrvDAS2VV69e8Xu///t8/J3vWgfW4cwYZJnYbF1Hj69+32PGx6jYyPdaWoOncVwqCcjHG+p0QqO55tZm39GgxAU/X3sQLXqJ1xkmBv/mlfVeLPImTAjiEKKuC7TkJpKVpV3fctT25psbbqhu2BmMhOWP7ji2QV2VTMmZKJGYHBb0ycfmFGeFjS0iy+dz9jKwmtzK8uiG6VqD5HD7mriFJL3nqEpwhVIKRrXtu54u9YtnYyMlxWhOWyl1xJTQohAD6tGy99+NPj695EzVQoyQUjPZsUK5eqs74dBqMDdbG0ONnUSOpqCQup6rh495ePmI+vHMeDzyxfPP+Nkf/YzPXr6EZKMS+y6y7RIhxSWIBBHji4ugVcyyA3HcGx9EEMhTgQC1ZGo0+2jpEmO+4XT3inTZU+mQGln7tP7ZLTj5+WX1C42P/5brvVjkdjn1Ug1y0qrNf38RzrbrPKK3vNyaKLp4+TV8/Vx0EWTN+9NiSn9W3ixNB4tC6rNAreNpx+gyTFfWX9ltez798VfEoHQ6IHUghcGYgykxDD1xGOi7AQjebFKv7cyHW4ISUnVs35CfFCLJrduiCNM4mmTvDBZVhxNFFKkFNNMwNonVT6y20aH4UFzEONmqgVyy29cI/XbDhx89YbPbEoee4zyat7r714TYxoqr84z8MxG1/L4qlEKdbbhYKcJpnFEVpjJTxAJR6nvoNrz+4gseXD9BgVIdDoKzSP7G5+5ImV1eH8l98OHN61stchH5EXADFCCr6m+KyCPgfwR+APwI+Iuq+kJs2/0u8GeBA/CXVPX/fttz1CZkqLI0YFTbAq/3PlTgXoOgFZ1RHV+uSvKZoO0KIaDFRcs5k4IQu7g8VmzIhTQ6kAkv9Lyt7EWnROvsLULrlNAUOeSJTTB33e1mYHuxY9MPJihohbG/5hCM/diivjgXpuqEqDKEDnVQrs4zs3s3nr+f1A1Wg5QZKXZCodb4mfLsp6Hc38Rip6aoTY6upYm5bYNZhFc2m4Ef/uB7HA+3y2lx7lZlA5ZNb1odxRKc6TjOTiFQ5llRNVGFJrMDCQp1ms0ORG5gHon9YGNWtJ3Q1SHd+5CtZbFGdxYUjWuw+kXXP08k/zdV9dwg6K8B/7uq/g0R+Wv+998B/m3g1/zrtzDruN/65odubLTGTTgj4Ldoe4aXnv99fQT/2Tfe7zn01JyzupjoRZCIybtSIITWKQysQ2XPCiC8plUTAddi6hcRIXUbdlcPuLu74+pqz4fPPmL/8JqQHHLzXDilzrxOuoSEbGJgz9VN2JCpPmxKi4mmNQSLLK7uf/O+xeAe5lV9DLqp+hfodHn/rLbV4qSwXNBsJLNSK3m2xU+ZCCh9CHz85ImxFVnrm/XA04W2kLWNSzeZ3abbITER44aUNsTUkWM1hLBU5nHiZizcVmE6HtinK5vsQYMSW59j/RybKsyqqQYrt6bTL75+mXTlzwO/7X/+W5jA+Xf83/9btU/k/xCRByLyTFV/9k0PZoIC7/oFayY01t+Kn1rDoRYldetG0GrRvnhBkiRZxT8b0V6AGpVMZTodKVog2rgQE+KmpZCqzQ/bN57E4o2iQApemOaMdp0VnjFwyoV+s6fbXPDdX/91dvsNsWvYcvD3lIjS+yZKS3fWDkdxRMdGfwvR6bErvFh92l3jsLTmjynWZ6gTEpSoAaXQx0TVylydCy+Y1V30gSYpoQIZRecGybqsL8/U4pvKwBFKzYzzxDbtoCpTLcZ0DJH95QVpMLhzNQhSShVDTtRV/N4WK1qQrmffBZiEeSyUnRuUWk/MUxV7nPOOZy3W6XWOluln31HHU4H/VWzb/Ndq7lcfnS3cT4GP/M+LTZxfzULu3iKXezZxH91XZGtr0TdSffgaLPQ8dxPnF9cl2qhaydk8VIIat2QaT6bcSYGQbKKCUUZ9QC4mKo5VHDHQhZudgpsbCRDsiC81sNkMPHr0iIuLSy4vLug2tsDaEd80qi1qrxQDWSYgG7W2tbahnPuk2w2zdODMgL5xe5oNhLEPA7HrkFrpYyD6wm0wrFZ7PkttvBGVhCjRPMSrEuuG169ecnNzQ63VG0ZmcnSaR2M3psTV5RWb7ZZ+O5DdlUvVaASNR273P3va4ZYe2PsrZGoV7u5uuXzk73SxbF6bc/cW4gL7WoCz9f3N6qBvu8j/dVX9qYg8Af43EfnH959YVRr971tees8m7l/QGC3C1apeHLbo5uoTP8IafFaMFYXlD7bgjAnXOnIYZOi2cDHYLMnpdDQsPkFT/lcNBLHnznWy7VPU8NeEMRPFRocbu05c7MwCyW26xOV+Z6h7zs7Ms9mT9oaFRZ/olnUxRko1965AspDpbmFWW9RlU5zXI0tu7M4EIgIh0cTW2gBRv5ctp1U1z5KEkBVHrtopYYsvJVMyXTx6wP7hNePpxE//8Ccc54k+zxTM9XZ3ecnQm6GSdzXcyUApGJ/fOPd408onaJQma4SihaqB8XSw72s+27CtCD0DHVTcgsIDRLWz4S2B/NstclX9qf/3cxH5O5jfymctDRGRZ8Dn/uPNJq5d5xZyX3u1PK9BT83jRKup75uvtZ2dxrEwVKUat9yPwvOF0DASxAhMUUDzTJlGpGbmImYzVwPzPGFud4KqTVsItVIma+yI48Jdiq7NlMU2mSqIqpOWrKNaJVhL31+PFWUBMyeqvkhncjBZ3zKnvjn0vtnlO6MnLIN4MY44jWwT/H65n0wjO4mrZhYkas7UaWY6jZRshexU15ErrR4RP1lS35OGnrvjge1+z/XDR+z3exMze1ACsVa9CqIJcdF0LeKbrKBM1AKlJCv+VZnrxDwL2cEFS02qOy6s9dmy0fENLauIwrz+f0llkIjsgaCqN/7nfwv4L1jt4P4GP28T95+IyP+AFZyv3paP2welbvWgvkvNsgGazrEVncWPMz2DFnXBu5eFrtZ4kNiRp0pRJc8j0zTTOdwl2Y7MUsy+IsZISqa0GVJnEF5nOPE8z8zzxGk8UaeZvjN6bqnCOE/Gzz6LunhqknOTvzmpKTTCv/FcRJr/eWIlOznTLrKmaeewqdvFaa2LwGJN38Jyj4RA0dnKtLY4QqSGStoMMJuCCE9pUoyLZ2L0bnMthcv9Bc+nr7i+vmKztehtKWFtBynmV+mIS8WQrGbD5yzJUkBroFQoZWbKI6dJmRuVuQkuirFNg5/gpXV8Q/Azw5tEtB7LLy9/+wj4Ox5dEvDfq+rfFZH/E/ifROQvA38A/EX/+f8Fgw9/D4MQ/8Nv8RxrC1ftuAUInhIsusdoi9p+bpW4wrrjz81p7CZYaxsKc56ZpowkZZqzK8oLEgL7/YaLiwt2+4HtkJwqazrCEIIVb0DOE+N0y+3tK16/vmEcZ8aTCQyuHjxo5NI3GlXe1UziG6mNDGmiZmdIWnjCTpRV79keT6rTCnB7Dd88ZrDTuNh69hV8TI3hEYJQU6RLCS2FfjP4zB9LJ/pkkrY8t0WjTLWyGXq+953vcLHfE7H0j4Cp5r3bWf1zO598rX437D4rORt2Ps9WI4x54jRVuotLarXFJaquwa02/5R2wstymlfvhbS656zT8bXXtzH8/H3gN77m378C/szX/LsC//HbHveN36J6q3KVQ1nOZWu58Vps51qBJv7vwfHgBS2D5btqnlfBsNl5nkAreZwZ58qsyna35frBNbvdblG+qAhFm+63RVAcCkz0/cCDB4+5uLjm5vaO3/+9f8bnX3zB02fP2AybdiOWNr5gJvfWkpez93PmNuD3YfmvrP/eeC6i7mrrkQ2AYjyS6AhUOSvIbdnJMl25zSJdtoGyBAsTbMTl+WqxRpiWihYlbQaCJHvNIZJFnMQVKGK61XMev4RgfSnc+8Z70HVJS2CeC/Nc2febpYWfQjQ5Hd7bOEO6mu7WPpa2OKr76/zi6/3oeGpbpAmhNQPuq33Wj6a6yrtho+LIxc/v5mY4pCgUgxNrzuTxSAnKo4cPePDoEZvNhhDtw2v5PmKGO4osiECldWINiYkp8PDhwJ/69WREqM6mP9DE0LQiceV/t41qLmCJZciuNClXXd7TPUUM+OgT3MbaqK+dpw5NhSOOwthz+NL3E6A1ygyvsqIcMO3mEijEJH7+fHmeKVXNGi5Egzi9zrHObY8NQjcZ3YLDO7enzSVlsaDIKMVRm0rJlQcPHtH3A1XdC6elIxIo6hpSEZRK8dNKncwcgtK/ZRW/F4u8FRH44lmj8hr1ECu+kGpyLR/b3Y4xD+gLpNgiqfs1Y7N0IiVn8jhx9egB1w8eONvO2upSKyUL6mNHQlwLHcHkYa2L2ii9tVb6vufZs4/NxjlGquhSyMH5BvToKg3fX793Dgda80m84Gye7RWWSRjro2XvNC5U2wV7MBW+Q/sW31v+HOx7rW5R59DoYn9XnWG4Er9S36MSnAQW/HGin0Y2GcIgQhz9qguy01K26vrPWoqTtoSuG3hw/dBeS4hIG4Go3nH2ocEGq56hSV6Tpa+xFXzzei8W+Zpn+6fRolA4i+itsyUNDluBBfswypIHN4hNrdthx24QQjcgCTbDlqvLh5aWFFOt1CAWbKrSESEYfbRlRlUVjeqpbrPAsMNXHPGopdB1aWmRt5zaTIqcY6KOsxcBqWgU3+AQUiukW/+2NUccpVHzfmnNKhMBN+WQ8dClmleMFa/m+KXt9TcI0jNmFcwKQ0FrolZhwc5FqBrIRRk2O7phQ+w7SGERRTRinUhaApGixtEvTX10xpWv1QyZELuFUdltLui6hPoABI0RrdXgRR+6G5yQp0VRT/fMuMk29q8EC3HJSRvRRiyXayjFssD5+iJjUaqwFnx4Ho3bU5hmccOwu6TrKirRcOIgJrB1spRlF80bZT0ZlmgsAameYjTTHAl0qWOeRmrprIlU7SRAWWaUiraI7SeUnzANGm3uANCIYLaTq3svclZk2WKqS1/Avl/taK+VQFvca9qzcrKxky4IXd+BGIeeXI3N2LBvgTFXLi93hK6HmGwU+lIr+IRlF5TUWsw+r7SUy9mC/nyu/vNmnNCHwP76ERqTmwnoGudaMJH18xVxu+vWlKvV0se3rK73a5FTaANVVSu5zoAwDDbq43ziMqw8azhb3LT8FJ8E54rDosTY0W13zPMduVRCruC6UcO7jd9SxSirwZ+r5ar2XB6dPMc27BqGvud0uEOqMgy96y0tRdLSsGr/eW+pi9tpBK85mgCijSNvG0Cri421EdfaDgTrJtrmsAKzLF4rEiA7/6UVry1XTs6Q7IfBFT2FUhIlVzc8UqZppt9dst9f0bsPYrtKO30RdyhoJqhr88nuV0DEXMfOq46KoiHSX1wxE+miDQ3OtZCipZApxaUAr61HwLpP24n6tm7Q+7HIFWzLWjoi0ohElhuK56rF3WbfJGut6cn5m5VWh3vOauPGY99zm18yzpPNuxSbIEcUgrq/gbR82ElSZ00Ji1CNvBoIIVHzSIqRMmfmaaQL0bFss0qz16LOt5BFRN1gIWM6+kKVtnHC0h9ohpeW38rZe26nDGaWH4zTXc9yVAnWsl+6ph7VU7JiWZqWsxZzrE0B1J57sxW2uytv3BhDceHxO5eIZaF77n120tpz+gmsfl9FvJFpeLmkHg3JaAxLy75dgaWR7r+P2kmVq6E/Fgx+FRY5dkOW6RD+P8DzYbtR7SbWWij+oZyLJ5buon+IAVeLV5sTT81s+g0vii3GeJJVBAAAIABJREFU7DZxrcijmM2EVocepXm6rAujfXANk04xme1zhv1ux6ubG1LqLJoGy8dVdJlj2QhoBajukR6xQi7E5OvB6opGxjrnxd9Ln0Tcwrq6GVKhSDW6sC9A9XEkJRu23ppm+Ck0zzPFC2sjvbnOx33eYxdNU1oLpVY2G5OqWQoUUM00k6cGWzbj1eCnYM4KRV0eF4glk50CcLHbezZaPNJ76kVTePn6oC4nhKq7NOAFuf5KLPK2463QOqfTnqch93wNWSN6q+AbCWmZvc66IEzrCZcX1/xonBgEhs7VRlqR2hxol5dkx6/niOcjF9sGDKG176HfDDz+4ANyVU7jyND3tEi7dGc9P7YCai03lixoSY1+wV06Kx61YeYe4a15ZIXgogllNd5xPAfOzOtDMo/0VsE33kgbfZ5LodSZJfCoMmc/BXzMyZtf6+fBgh6pqA8eMyCh5sI4F8KwIzWpoMObCwwkKw/+TXjYJlN8++v9WORiRV8pdrRTjMLaImfOeckpSyn35G/tapGvOd42k/z270atj+wur+i2W6b5ZDwK/3CkmndgqZUo9d6h2a7zSAJnmwxlVkUCPH78mJu7W2My+sZo2Zh1Th3jJtAsBKWqdRBVEanE0N17HzZztNwvIFnrkCXSe39BvEPbmjtVdRmhaI9hbrQhJt8FumzAWnWB96rfDxvx2E5KQ47Mbfg+caxdbfy4+j2rLqyoVW3jFGWc4dGzJ3RdZ5bRNBct21CpORicPXb7rNQfqxW361b++uv9WOSsx7D9+euilizRemH2wbKQ4X6u/iZGrR7aVIRnn3yHn/7e/2vKmOrzQsOKPKgaOOhtHPiaBd+eo01Brv7CU0hcd9fM88R4OC6YryrLlDaxF75wyv2V2mvUtQm2kKr8PpyTtNr9aJrXhpO3otuE0ua/qLWShs4WcIYQTKtJ9CK/zpZTa6FkEPqzNyrGlGzIVw0wQwjd8jm113tux6dtQVYvZP0rF6dUxA2XDz4AEUOCEOP405Axr1P0/kI/p2zYCWQ1xDdd78kiX9v21s0My+JT1UX4C2vasPBCuL+oF4aepy4tR49O0VQCH3z4lE9/9GNOx5lNn8zZ1hey2Tko6jljYw2e5/tL+oNtyOAKoVILRGvEdF1H2MJ8Gslzvsd/EWcpNifdJWJ5TbKgKguKaMV31/UG/WHFVnAP9JKtkZTccdo445lIR5bicGODpKINtArtNIQYChqbt+EaoddGDktaZ+97LfTVvWYQp77W6ilXY10q1ALZRryfJuX2mHn8ySfsdzs/JfBBV0YRzm5C2k7v6PRqCQYOqHekWx3wttTlPVnkWMri8Fh2P2z4eZgQ1oh2niefpy7nkf9+cwhEOob+kmcffZdP/+D/I+8h1UqnULNSdPaIa3CVLKAtwBpFz5/TzDJ9zlB0aq4GSImaKofD0SavsUq4KorUcLa4HXXwgkuBUtZNfd6hrLksC86KY7NzKHNGygy1EoFYlDGxdmlFiFKpahYYsbPHnnOmlMnhP4csvbC2lMVkgNYsaidPa24BxZpiMVihr7bzTWhRzCVXc2GaToxTRIZLnjz9LikmiLY5RE0fWqXxbVjbJuLEL2kUWy9hApANnPym671Z5OdFZFukLS1pkaUt1ubV/XONmrPHetO2wlKQxkeBpx99xFef/YS7cSL0G7qkxJCNWVe94K0BpNpMe2WZ3Xke5VpEX3WJgkiiBhufSOoYdjtiFC/WzM651oqU4qdtsIUiSjBWultfKFrWaXOmkfATKwhUoai4cKCidSLUbNMtcmbuRnIfER9xaEok+/kSM2WMSAxMdSaXbIVhlaWZ0yL1Oh1PQS1Hj3UmiTEjg0LVmRASfRSzqq5Aye6SO1GmmTFnika+/8M/Rb/ZU0hQlFIssMRoiBhq/vFBjUoxewdUfdPFBulaAbL4Nv6i6z1Z5LIsnvMF+yZB6c3FDpwtsvvXqjW8X3C1ZkS/3/Ho6VM+/fQnpLGQQibUinRm1dCsOtsdEtbC8xzSazVBI2KpNiwimCop9Vxc90ubv5TCRs0Jl1I8KitoWZo6bXE11iGlGLxZGkEJmzIXeo9uvtCLwXeHuzum05FN16N9skkYrVtYQWpHCB1dH0lDzxzbPCRbxKV4UUeDBlshyjLsVyQD5h4G1UYQNoVRsQ5omSbKPKNlJueJ0zTzyfd/yOPrKxuKm0disPSkYozSVqSjhpsLBcN3cNJhC+N+H6T9wi++3pNFbnhty8FapF6Qj7M05U1U5fykavzic9ixWb6JmHVZrYqKkKPw5Dsf8+mXn3J3HBmi0IVo0SSacSbiRp9giySsHPFlLAuy5KGNVmuTMkwa116kccetMYNEGw1YK1JZ0JNSjLxkiEtxtIm1AZLL0sqvWJoiIfgitw1RcuFwOnLz/DmbrkeGjtimVKhCgSQDMXakPtJvN+gmEaSNKWxGoufoydoEMlTDBNJBIjrPfkqa4ZJ1Vc1vMk8T8zSiVc0G+sFDHj+4gvHOJksHE2qIBkroIQRmd7iNtKLcUtdiRBvP9fXeun6b8vK9WOSq5hneFnhKaSk8gdW51mEpQqDFGsOZvStZgxOGWnPMcsha1WwgXPGuilXlQ8/Dpx/xxY9/xDQLfdchpZBm8VmhgZQGIhHVNpvIi90q3qwwu7bmWbiqlc5UPiJUWvveFrtZBNrjxWj2y2OZmfJMUIjuudjaYw3Oq9UmVdj7KIQyUSU4TaAw10wumdNp5HhzYK6FmCKx64ipI4aeXQ+bToGO0BXiHCCNTLkCHSsv3Bc5xXxiPNJmAaUgIaFTdtTKUq/qr2GajZJxfXnNZrtjs9tDvyFJIJQRphm0MqmRrsy/PVJDIMWEpAF6m0gdI+RSqRKAzsh06q2jt6Qq8J4sclhV7ecFY4vGDRmhLRgvwKT9jFfYQiBoh1DdgVUX/gmlLKSnoD6wtkSePvmEFz/9lGmaqUOklMxpqqQUF5GDwWWuddHW+W/dwbgs5vMT5M2br3q//aw4c7AxLfOKFk3j6BOHFanmNCClrnxyKmhGIxSt1OCjE9VEvfvLay4urhhSh86V4+nEOE1mThQikjoYemLf2yxOASrU2eznquQVOfFoEiXae28FvxYmZvOJSREJjkJhwEE/DFxeXZOSDbaNqUO6SJltpqfBqOrSOaMMaM1oFDRDPd0xEZljQoYd9B2BDQRdEJulwfarka6s15uNBXC/Ql3pooEVdqulLimaaCBWD9WlEPDJCQo6mxI8AaGamX0isuu2fP/Zx/zRj/8p47G6/0oFjD5qjYroGYM9dxFFpCAkVOMS+c4X9jnc2MRnpeQzVZPBZeJROPYdG7F5OtM0mTGRD4IVDCGpDtXZXvXmmXPwqwHsqBg9Niik7YY+JXabK9PLijBr5jjZorcpGAGWIldRzRSZbPYR2JFYAYzcFaqxKXOtzFWJKZJkWDxsEGG72bG7uGTY7ijFaM4EMyG1qN9gWg8GRpX0SsZnNqmp/Oc8GgUjRPrtNd32iiZqMbTKrUO+4fq2NnEPgL8J/Eu+nv4j4J/wzmzifh4dgdX8XbDWsLQ+pIg3GSyHbcWnMNNToczUKWN2y2EpGhWFUolOB51zJnWB6yHyeujI44G5M8tkT4NpRjkiLXqzYrvt9kpdX+sZStRqjLZYGu3Ufma1qEMsEia1mTxLYbtAcdYWr7E1E3wqcVVP5cSnSZjW8nQ3Uo4jcYLu4tp+LmPzR6lsuo44BNOIFmN7zrO7apEpkm06s29SOw2tZgilLppOsvFGJAaDTmNgu9mx3e/pN1sgLgVjra4HlabbVCeqeaEuLf2Ivokt4ncqUKCSOY5fMM8T2/2lGT65PlbfUcfzd4G/q6p/QUR6YAf857wzmzi7Gv7ddd39hosH5wg2bsNqEAhm2WYLSAl5gnmE+YTqTJWZFHpTlrjkqquVeriDXIkI+aRImfnk0SPuTj13evIZNom+j/f4MgbTZQQ7onGuSFA10Y6Ijxx3VASWkeIxtmG7zSnL2voNKixqfO4h9lxeXFreiXIcTxCF1PU2MY2VG1K15U4W7asoVKXMM6+fvyRNisw2V6jW4lZ0FXWXANFKDjCpsRuneSKkQpZC0Woe5BjdQdSK5Mahr+57EyQ6ICBcXFyz213YdGo1klsbolA99anYXCOqQPEGz8JsZJ0SgteXWoil0FV7ruPLz9E8s7n+wFzAKvDLqvVF5Br4N4C/ZE+sEzCJyDu1iTt7Pn+DKyfD1Nn2/SCB4tV1UdOdSJ6o84HpdCCqDV8KSclSoU5QTRgRKUiZKPMNUiClnnE8ocDQdQyXlzzor7g7Hbk93DIj9Jbpry3/WpCEzzcybFrVpyNoE0oYpmwKm9YZrUsUM66Mc0RKXVvZ1drxu+2eLGanphKYptGExqw1S62YSWhDkfBonwvb7cCnNy85ffkl148eMGw2SIhGYwBIgSiBqIpGYQK61FsTKxVqUuZal41YfdhABPOAxJmhAqd54np3zfXDK/djGWjmRssBvaSgYguyVERNMN7cCjQIfUpoqQvnBzVUKogS1GxFQs0cXr9kVuHi4QdI6N66pr5NJP8h8AXw34jIbwD/APir/JI2ceeXsGLPb+a1rZ1uFFWLSK0IDASkZPTwCvItPZU+2EhAq+mCTTpD0GnmdDgwHm5hmtkNW6pmkIKWQsnFxmnnxIeX1zzY7Xjx4iXz7YFUIPWdiXdTNHRHsQ/AxyDaMFxBvINXVYkhoSrkXAjBUxpM3yhz9uLYfjY3UQQG/Ei0adN9FJ8aASn4RI1s3c8o4lmP5ePEBEFIu579NvHpH/2Yu9Nn1BCRuKFoNAlg19GLkKq9L+k6LvdX9JsekerNGEsHqZUyF+N8I0hVskAJ1me8vn7Aow8/MCvm0Flzqlp3UiIL6qQOBFj7PvhLViRavr54tp/1QBp/Pwax5lqeEZReCofXX9ENicvrD7+2jju/vs0iT8C/CvwVVf37IvK7WGqyXKr//DZx8oYX4jnRZ8mxW24ego0tCULNlagQ1XLv8fYlIR9J0fSYIbCM3gtqi268OzC+PDCNJ7oukDZbqkfY4tOGa7HpyZozIQW22w1yfcWLV6+5ef3alPgxsN3vIIvDaoKkujixGrJQMRN/QdKKM1vH0wvZWtF5dg9va7bMxcUOoqQUiLEz4lcp5NGRoWgdyZyz82SauZB3I6OP666V/dWeuE3UbYTYk0mo9BTfCMbhtsXci1iLXc31N2smdNFSqTl73mC88Qa33EwHHn7wmMdPPkS6hJKomL7V7NwAXSkaoY2SadCf03lDCMt0jPaZnxPSqiMwYGLzYBwKYi7cPP+Kvt+z3W7fuoDfdv0E+Imq/n3/+9/GFvkvZROn516Iv/6n9Vzdfs6sM4Gu7e7s/I1BIiHPnG5ekg8vGQaf8ymRqsa9aKbxtVbmw4gU2PQDIVmp03Lsru+JMSzDpopW5CQMm4Fhu+NBjNzc3jLPhgxUF1DgY0EweQXNuq8JLYBlSoYNc1VLdYKlOlGCiaVLYZ4zh9NoiEbAzPtjhgJ5mjkcj6S+Zwoj01zAi9k5n4BqyImqjS6hMo8HZpScAlkDz55+wvbyISltyVrJZWK+uUOO0zJvtNaZPFbGfCQXQ3fUoT05i+zq0rgR5eOnzxg2G0NOMKGxnWyVXMwpQDxqt2HAnaM5louDxEhZ+EFnFAxfA1pto8zZhgBrNilgRBiPB16/fEk39HzT9W3MhT4VkT8UkT+tqv8EMxT6h/71H/BObOK4X2j6G23HlYi3rfEmSi6c7l4zHl8zRCXad2xuVS2Gebhn83hzoJxGumADV7OaHlHATD1DMJ2jKjqD5sJ4OHLqN2wvrxgGi6q3tzecjkdOxyNx6K25orYISkjgRCipayOqYQdwrmwyvxTxAjqrMuWZu9Mtd7d3SK10yU4Ncew6F6XbbNAoXFxfs93tmY8jp9Mdz59/SZ7NCi6lhEZhzCN5PFGl5/nPPifKwOMngb6bLVuuGQ4nypzNQzEI4+nINM/MJSOhmAwOkwaKZqiZqoHj0TbkD37t1xg2O2NtYpCqUXVdoK2ZmAIh9BYQovnUBImGh4tBlgaFei8DWaR7jS6hXmsQBCkQnGagnuodXj1nv//lIznAXwH+O0dWfh+zfgu8Q5u483b9clxlI+tHb10HApFCKUdOx9d00YlY0uRyTdNpKEaZK+M42eLrxZiCnkvGCnkuSJ/MvHKe0TmTpONYRl69fA1pw7C/AJ3YXZiS5ng8MB+PdHMhiLvddj0NLqsIEjrjrqg4Hdb51A2W87teayX7LM1xPPDq5iuOt3dECXSxI6WeOhvnptts6a72PH30kP12T3ehPH7wkMcPP+Czn/0RP/mDH1FqJe037K+vuHr4mKsHHzCPE3/4T/8ZLz/9kuura7b9xobFnkYjiqE2AaLrOI0j2+2Wy/2AZmWeJnKZiaESU+AwzUwS+PXf+Je5evSYLAEp5lcjYo0hcS3oVCZC6thuOmIXvGiO1rgSI3mVWtCp+kmwFuXtakKR1hw0dZeFu6gQ54nDceLudvONa+vbutr+P8Bvfs233o1NnK5oyhuPBbRuphCLEsrEq5efE+uJ0CfX/3q/X90dKtgyN6P6yu7qGlVlOp2MU1KxXDgXQhe9NbN67VEtut7c3JE2l8TYA5X9xQW5Zu5evCTLRJ86uqFHwozOnjdLcETApwZHj4h1lYjleR2L0hZaSIn91RWx63j15QuOhxPzNBNqoGpgrpXu6pL948c8fhzYlsh4GpkKPHn6CdfXD4lBmKPS7bbMuXD78hUfPHvK7c0tr5+/4PbFCz786InN9BynBSYsKF3fs9lu2V0Y6es4jkvBP9XCiy+fs7m45l/5zd/i6uFjTuPRuN+qNhWjGXXOmfk4oqLsrx4iBRo0VoMyY5BqCKBk3xgWmuoZRwZW7tL5eqhOFjMqroEGt8fX37i83ouOZ2sFA0ua0tIXEXNWRa0AyacjNR/pg+fDxTOTpWBxdEaVPM9IiHTDjtM4svvgMdPNa/TusChXNskwebzVX6NFtVhgPP3/1L1JkyVZluf1u4NOb7TJZ/eYpxwqK6sLkhIakG5BWLBhDSuWbNnyDVjzJViyYYEIIkg3Is2CLorq6q4pKzMiMgaP8MmmN6jqHVmcq8/MIzOjqqQTEU8V8QgPMwuzZ/qO3nvu//wHR7/bM1u0B5Zh07bM53PGzV4ouEn6z5yFWCXpbbIdK2XIKaJNEQMXKdtB7JFyCZH1aNOwOlnwcD6HtwPb83POX73g/MUFX375lC++/oazBw94/8c/IlUV0U7ehZp+7GlmSxaLDtVaxuBQ+55Z23D66B4Xl+dsrq7Y7no4v+Dk9FjoqjEWMppiNpvRtA0hJPZRHHyvrq64vLwkJM+9hw/4yT/5Gfcfvs1+P2CQgZybSHQpk0Nk2OxIzjObzwWZCVGcy5Um+wmHlRmwthZCkFCAAgvnVCanCGfpNk0iFbfbXCawKFnIhn743vp6I4ocXk9QmHjk0xM9FVEF7DYXEL34nWWKD9/kCiuUQZUhx0jfD8Rs2OxGVqsVdx6c8jJ59sOeShmBvYwgIUYZFIk+j6jaYAPkkNlcXKDMMbN5TQweoxRNV0OGcTeACxSelewWxTnK6FoGVEqQoOkw6mOgHwayzyTvcc4RVYa6orWWwclAaLE+oa4sZ0cntE3Ll19/zW63wfuEy4mqaWhnHdVsxqtvvy1DJcGa112Ha1qGrkXNRbyw22xJX3/L9uoS70fmqxV104pFXJRD5Th6dvuBl/sNz779lv1mi86GB4/v8cOf/CF3Hz6iahrSdodzjtrVBxJXDA7fDwzbnq5p8TGQxz25cF6K/h6rLBqFh0InSMK/ucU2VUkduC0hhVLgRe8ag+wYaAgRlQLu+2v8zSny24fNG96HPvjnKRA/66GnM1rYfwVaEoKXkHWyumkNnE8sj+4yuhGy5eU3L9juetlijUHZlqiNCCm0JREhWYwFjCSopeDxfU1qK0LWJFORtaeedeQsva126XXmZJIRulaWurLFOUodVvCUErt+w+76mt3VNZAxszmrkxPibGRQluxH0rhDA9pkZrMatOHl0+fMlkuq+3exusJaRTtrcbst19srqtQwn89Jxetd64r16oSHDx/jr/dcpEA/Oq6fX5CVxfvA9W7DYtbRGIFSBz+CjhijWCw7fvRHf8Bb775H13USOhM90Y/40RRqgeD0wTmcd9iqIrqRWimqyhUuisgaD/RduREHq4tcWs1UBmPTDOG7Urzp56UcCcGL2MT/emL37euNLPJJnW+MPQyEtNGE5GVrbitSlhHj5BALAqHlVKC7mJh1c9p2QdPOmDctFxffYKgxc2EXKiXQYVKWkEZCzChtCN6RstBLK63I0eOdE58UrVF1LSP4WYsv/S2Tc5QCFRWkiFIRgkc5ja4reTNTIoVAP+7Zj3uu9xvcbo+1Nf56xzhboLXBB0dIA8ZYfvnLX6INfPDRhzRoNi9eUbUNrBJdVWFrjUoNioQLgf1+j9bC1oweNJaj9TEX6zXDOBCdY/SKfh+42m65HnakbFg20GjDTFfYroE68+S9t3j/ww/oZgtZaYPHqkTwI0Nf+EQZVJ7w+4QLnsViRrOcU3UtKE0yNxExpTMh5iSQZoFY9WtUq8lGb4pglJY2hknXKeSiOI4Hd97fdr0xRQ6vHzRuy9ZyuZEh+pInbwWtQD5vLaRCcPEh4rZ7jIIWw2K+YHQDL58/Y+x3RCJt1zCfL3DeHezHoi8SMxuJ0R3GzdpWaG0Z+wFlNblW+JSKWifQtA3eOYZhICVZ0U3WpKiEGzIKGpCniBXAh0ClGqpmTj0L9INne3XN9mLDspmRsyKaTDKwHUaePXvFvGuYzRq6tuLpl78i20yOd4ldR61vcjansX9V1YRxZL/tGbc7Usqslks2m2uGmMijZxh3eNez7FpWs5ZGQa0Ls7CtWByv+ej9T1g0S3QUmi0qYqwiBE9KEgUDoG1FJGMry9HxMavjNVixvpCYF11Ib6V/L3yd6cFH3cCHuni6CPUhQoYQSmxjklAtGaqJKWj8vbCkyMLom9yeJquGgzIGGRNrpQq0FTBZY03BQ1L5R7mJMWaaqmbc93z71RccHx1TAUMI2Lamq+fkYPAhk1ThsSfhqMfgyDFT1ZpQJm4+BpwTNIekhBhWRtSVrahsxctnL6iqiqZpqKtWIkWSKJ6cc4QgE9WYRObmswKrOT6+y/27j/D7Pc+efsWr58/xLrDrR676AZciSiXu3r1PzImvv/2CL776iucvvuH9j3/AnXv3WC9XqBCptCaoKK1TZanrmpQju92WOA4YBZWxkCAET7/foXNm1TTMK0NtMnVlsLVhcXTEOx9+xMnJfaD43xSbaF3X1HXNOI7lICiw7cnd+1SVRKRrW2IcDzZYJfBMKZktTEan02ElF6xcKUKWwZyiELtiKghOJoaMD6JJTckTU0Dr5nvL640oclmp5fR2oJhywwCULSthtSX4iMOhsyVXGonqkZup9HQCj7RNxW6zhTCQ/UhdSfy3U2CNxZiaOPZQFc+UFMkknEuMYxBCU4yoLLEr+7FHBdFLWqtpjJWfmTWdbVjNlnzz9Cl10zCbL6ibVlbVnPDBM4492+2O3W4HQiKlbhvWR0dUtmJ9fIzWCVTkxfOX7C97hjEQc6RpDefnF0ypcbvrDRcvXjLsex6/8zb3795j3rTM2o6gxC89xMBqtaJqJLpws9uJUihkxqAYx0RwgeWiZbmo6DpDVWnatmZ+tOLtdz/g3oMnVO2MiHBrdJIJsqkauvmC3X7ADT2L+YLV6piq6aSlMZaYJf0iFYH3dEC9eT+nQRkHXnlmEk6n1yDXHIQGQZR0ihQjzjsiARcDbbP+3vp6I4ocQKIMFSE6VBKEpa5rOUA6B2SMsRg0fnQSGqVtGSLk4smRGYcekyMX588wOdJvEq7fU1UiJrZ1JbmVRjBxocwKQT+GQMyZmMGH4vUX5Huen7+iXcxoZh3RGrBJUh4M5KSYdwuiT/zNL/6G47MzTu+cMZvNSCkxjD0hDDjf0w9bhn4geYNppNVZjCP7pmK3u8TnSCie4jLeb6hqOD5a8/j+A3JKXDYdT59+y/m3z8kh4a52LOcL1idH6MbSzWYsFMyKS8BiuWBcrPn6s6+53I5c7gZ2+xFrDffvH7NYN8zajnY24/j4hOMHD7h//yHWNOQosr0JAp3sIZarIy4ut9S6YnV0StvOpL3TRu7rLWH35FIw+aTcThCZrulwOZ3Bpr/HgsHH4GUXD5Hog+yOKrIPgaP7vy9FzqTvuenHD9HZyOJujYWU8YMDKyu3TZC0DBiUynjvsN7hxp66tBSu70ntTCyazYy+3zIqQyZgTEP0gVQCm5wPaG2QtjvS7zb0znF9eUXWGh8jVVOT65pUWWIU0koymkfvvM03r17y81/8HXeuLjk9PaWqKrE2zp79vseNI5vNhjB4bDOjHxxX1z1oiGlgt7ni+mpLzobamhKJHpFZaqLtWnJe0/cD51cbrs8v8due2WLOenPC/GjJYrGgblv2+55h74nJMF8fsb57j69f/Y34JZqR4+M5j95+wPHZCYv5ktlsyfromNlqSd12eCdCCZUyqhCtJpG5tTWnp6cEH6nrRt7BSdx9yHy6Wa2n3fj2BPO2n85tw6jpz1Tkkq8aiSkzRkeMgX4cCRqCqVjfe/i9tfVGFLmUtxjlW2WZbsw4jkBhJZYUtm424/r6ClwZmVeT+ECyOlMIwskIkZAytY1olQjDhqgMuoZQW7yPqMZiqxbXB3yMuNHRD3vqpqGuDClm9n0v37s4YO33e+oU5RCWE9lWIsJVmWQ073z4Af0w8OzZM16+esXx0RFd1zK1YnXdsFotcXVPiIq+73n5asv59RW6AqMSRlnqqsJWwvvOydP3e755/ozKWmKQkbitNDE4rF7SAAAgAElEQVQkfBi5uBgYomPphXs+DgMvx5Hr6y3r1QrTttx/5wlRw8tXz/jyW8+jx/d5+4P3Wa5OmM/mdM2ctpuRVel/YyxpHAFjLMGJP0pKieA8RhuyvdG3Tl43t6eUIL32we3qFi32NjY+LWqvreCHhY4iLMmE0v4NIbCPmeXdU2ZHZ99bX29EkVNUXVO+D5SRfvnPmIWdN6ZANe/YjwOtmezFNMlYwVc16BBRIZJC8VUqb0CKEWUzMQw4Z4kJamMgJbwfSTqgskOHSFAORWbY7XG+R2tDbQxWQz84lAKnxUohZ40yZeXJidl8xYef/IDFcsmvPvuMp199xWLe0S46ZvM5dVUzn0nYaz94xpx4/uoF23GQCHQNtdE0lWW0lq6pUQSU3YHONEaGKWW6XRAmcc/aPXvO9b5nPl/w9Muv8ONAVTUsug5TWbrVkvd/8DFHzxbUTeTRW084vXOPpp7RdR2VrTGVoCHOewjyMIcYyV4K2CmNC56oslBcS+bQQch2KOIbuux3Rd63V+xpun37YzeclamXF8uO4KV1Hd3AmBJONTx85xNss/je8nozihzIOULJuvnuNeXhZKWwsxanAedQRmwijImiOi9DhOgDFQqVAyGMaGuJOVNhpTdMSSQ81hJixIcRcqLf74jB0zQzdFaEcU+VxbtldCOxF7JVlRU5RIKO4IFYuNaFMTlbr/n49ARTW77+u1+wubrk4uKSZrZgvjzCmIoYPIMLvDi/4nq3Q1UiXK6NwiKwWj8OhDBQV9DMFizXK0l7iJkYItvhis3VNcMwSBHkTLi64urigkf373G8WnB8doYfe3KqhHFpKlarI9ZHp5ye3KGtO5q6oZ4O0lFQKovCRSkq6ckTYSpEMvXidg/OYfg0UcNfX82n9zi/VvTTx6YC/267InEt4EMk+EAIEHxg8J4hwOrsjPv3HnETFfmbrzejyCfiTSxb2MRd4IaLklMCA6q2JKtwwWOcQ6GxVcZkULZYjKVMrUT7OT0y1ooqJ2eJ6wha8m98DKTo6Pc7gpcJZ46RfhzQKtPamj4nVqcnJKMY9r1wmwunXFLlilVxUigsSSnWZ6d88IMfYFPi6Wefs+n3+BC5urxAa4tRCp8Uta0kEl2VACgDjbUYlckq0dSW+aLjkx/+kI//8Kfi551guN7y+aef8fO//hvOX7wULSgy9R37nq+/+ILqrYe0TcPFi+coo5kvFrTNnPX6mFdXa5Sxgn0kOdzJPS+7aMGo86S2R8IPRudou+4g0P5NNn3fXahur9TfbVm+O9GcUuNiFIWS85EQIs4Fghd0pfcBpxo++PiHzNoFvx9xKooScS3OTcKhL+lp5TQvwVWF16JEXBtCKBI3Vfzxbsw4MUbU6bEkhWlDMpJQsO/31MsjocjGUUhWfjy8GOdG9n1Pa2vqusKlBLOW2XpJTolvvvqaGDwpy8OT7DTAsiKMMMI+PLlzhvrwQ1RKfPXVF2x3W6ocsVoEvVpVYBVHixnXo6yYgsBpTA5YK+P8k7M7nN1/TN3O0XWFQdGYlkdPHOOwo1JwfnFB7wNjyOQYcN5JOG8KbK8vxYEgevI8s1wtmM0WMh4PEY9G61DOQzcHQWMMUYXSNoqDVwrxIDSfCFLGVBwicG67EHBTxFMh3/7Ybc/1mzZF5hUhl6xPFyX5IySCzwyD+Cnee/KEBw8flyHT70ORo6BkwnPbj4Mbuq3KUrCNbbC2ZhgHfE7gIzYEdJdJtpHxsIZkFSop8RIhicjXSvHlEoiqs2AW3mdIpuwKNf3QU1divpOUwVYW6hplKyqruXPvLlfnl+JPmJWQkWLEqETOFb4o96u65uzuHYgeFwaqZ7lQBiBkaKlRCuazhtF7SmAiOiWshrmtOFqtOD27Qz2bMwwBM0bxjgmJxlru3DnFDb0c3Ld78hAILqKzEmQnyUzBZkPoB2IrD2elLNknYsgYlUkhE7T04JMix2iDzzKnzQXhqLoWU1UkRAOglTm0LVPrApOa7deNouDmIZquqf8WN9uClUdxQIgxyIPoE4Pz7ENgtJZ3P/oRpu5QEamN77nekCKHqZ+V82Z6zYd8MughZxSGtp6x325JWZfJWcKESJVkMkYST5W6HIZSzrgUSUmhKwu2ODplRS5pZ8pYifAjoW2NbWoS4EgkrZk3DVYbCJHVbEGN4eryUjDfIoMMSvpiVTXSZRlNqi3Lu6fc2z4kuJFxvydF4XekYkdnjMVUFpcjVVLgE7rR6Kqi7Tq6qiEPjpCuiYDP4rfiswgTlosV+SRCekVmTzCQfEVbzam7Fc2sE+51CiL3sw2z2YJ+f1UMiyJR39hhkyWYK+eEsYZ+GDDFQ6aua0G7JqeOMjHW2rxGK/hN1+0VPJcJZ4wTNyUVPF0+JmN8UQ3FJNrZwXn2g+f+e084PbsjQWfGFPOj3369MUUuMNPU26nXtjkQm7KMcMdn3ZJX+ZXoOadTfbkRjbFk5cV/JIm50MGcMmtQFaruUCVc1o9ePFOspepm9PsdSRtCsVXok6euZpi6wupiTZGjSOlmcy4vL8SkRxvEvjtR12K9JpZrmaBhfnLMQwVus2dzfsHV9QUuR1RpC7r5jGHcytDDGFGtV/I7+35gOL8i2l1Ja5MzTDCTHraia2cs5wOZxNgrhugY9gPHxuJCJMdAU1c0swVog7USKejGkeoWTi1wraziWmmqqmbvRnbe0bYtyWqizgdMHF5foSfI8DttenmPb9oWVVoz+URpq0sv7n3AFwOoUODK0Xl244iyFe+++z5NoU6gigfP91xvSJFPWs4bKgPctCxaqUMGjsqK5WIlRUuSAyBFgOADJhuy8wStsFaLWqcw/7SRMbMylQg1vGP0Mrb3QZjpk3Vb07VsdjuUMdhaTEhVsZ+QhzHTNQ1D3bDZb1FZLCTI0DRymNRjRIdE9gllK9Z37sLS0dQtmcSGDX0aQQW6yjLEihwDgUhQkmyXi+B6HJ0cto2s/jllvJwzSRGsqWnrmTD1XKCqNJdXr1hdddRNi6k6Zu2KupsBhQgXMzlMYmp/SJuLiDx7KlptNNnJKm+sQd8Snct088Z6G+C1rNHfcN3QNSZIUR2elcODUMKvfPAy/NnvGEbH6t49Htx/iMkKMBJB//dU1/fTt6TQPlZK/fmtP9dKqf9eKXWilPrflVJ/V/59XL5eKaX+J6XUL5RSf6GU+id/38+QX668VHXjPnU7smRiqSUyy9UKU9TkMWcphBRlNJ+mmxOJhSSVUsmtyYJiKERU4b2TdIMkSQ4hRNquBSUUgkl32NQNlTViK6HFsi6VrX2xmBNzYj/0DMNAzplF08Hocds9sXdEFwGDNQ1VM6Pu5nTzJU3bUhtNpROthVXbUNUWTwCdDw91zuCCo3cDvRsY3ECIgRA8IXiUVejK0HRNIUhVhbLsOT9/xmZ7TUwwX56gTCUH692OnAsdNwRZLceRYRhwoyPEiPOBmDJ1VdO1LXVVF3X/DbY9OWC9jpHf7MS3M1YnUODwBwq5dpqKCi8lxQipGPj7gHfF7beuePL2O8wXC8npK7rZ8Fvao+n6h6j1/xb4aSlgg9hL/C+ILcXvxiYui9deLkqa764BSk0kHlBa0XQtddew3QwoJQcUhQhio04YhMzvfKKxQBalDqpGWdGFKnJJOpYb5L1jVs/woSelyMsXr3AZqvWcqpCt5K0UH8CYJz2poetmbDbP0SZwspyjYmJ0vbxJMeKiZOCkCGF0+BDBGGzd0NUes6oEe/YWrSLXm5EYZPKpkyZ5T9Tm4AcZs0VVVoZZOqNrSzKaHB1tV+FcBTs5UL+82DJf32W+WFIZw37XE8JI30ufvR9HmmzJJhIV1LZCGwmPBVCVlWgZa7GVPUQiis+jtDTlTSzj/MNbylT4tynUhxa0tCe3h38+eHyJRwkx4EJkDMLiTEoxW6158vYH5GzRWsxQU06/9QwwXf/YduU/B36Zc/7V79omLqVYzOVLMSt16N0mtFzui8RRr9Zrrq8vRD5F2cIxxCw88IjGpUBVzN2VshjdYG17gCaVUuK2VVa9bIXWabVhO+6x3ZxZN8fWEs2ts4IYDpTgVB6sruuo6xqtNW3dMPYD0XtSEE1nSGK55rJn3PciwACy1syWc06ajhBHdv2INZahH3Au48dE6kQ7SRXJOqCosKaiaxZoC7aVAnR9X9yoIvt+QJsKlOXRk7d4/8NPuHMmcYJ7F3h1fU1thAAX3EAKorEcYyBqj7YVVSyKHa1QVtN2zWFsP3niTKEDUqQ3bcq0Ut9W239XkAwyrY3cFPn0QIQgLWSMkdGPcqawNY+fvMfR0V1ikgctCdYsM5Hvuf6xRf5fA/9z+fvvzCZu0jodsPFbvzTcHiZIf62N5uzsjK+++pwpbjtNMXe5rCi6BK4qWW09xVVWi5eimUbjSXr++WKB7z05BsZ+JIWENTVdt8DYCnRGhVTy64vQQn4g1loWiwXDMDAOA8TE0PfFHUssNUK4mfiN3gtkaBQnp3eY1y2D22M3PTnXvLq4YrPbMo4jrnBEdFXTdBVH6yOOj85YLU85e3yPl9cv8SHgnWPc7LiuKnZ95Grj0LvAcnmM0ZaLiwtAMXpPCIH58QxrLa7fM3iHNRafIi4lsraEYqKUjeboZH14iKdCP6jqX9t2J3UXh/fw8Jlb7yXc2HFMCMvE3Re34ogbRrwTUyGXNd3siHff/yHGNOX/Ke2Q4tZu8puvf3CRF8+V/wr4H777uZz//Wzi7ty9W76P4M5KFzHrd6Zp02oeQmKxXLBcLthenBOiFGrKImq2VuNcgDhS14amacUlVk1KcDk85mJGlFPGO09TV/heTDNtEUO0TYsuHoayJRfn2nJKnhAJY8xBHTTWtWQB+QCq7DJFKDB6z26/w/uR5fGa9dkJOkHcZ1qvqOtI09TsR83V9TWztsMYy1wZ7ty5z2q1ZLFY0rUtzo10sxlNiIxZQx3olmsW64H8zUv2znF+/orj4zXey/ZvrWF9fERVCdFr6Adcv6Wpa7Ip7gO5YPkxYpuK+ewBVSX3o6qqg0319I5MJlBTTX/3zKluql7IVrcmm8Idl/bEB49PhSyXAoFCJdAV7330I87OHhST0FwoBEYoBPF3p/H8L4E/yzk/K//9O7OJ+/Cjj6YO7oCwfNdoSL5gUppo6rbj7r0HnL98Id4hOWCSIiWDV5FQrMR8VtRaky1gdUk2UCSViIpyeE1irLOsD7wS1VTMVouDEDlmcYiSGbwU7dTuoBS2qg64mfeeYbcXIhWiZdRKkaJnGHv6ccDWFSenZ1R1QxwDCknO8NFj2oaT+g77zYaLzTVGG9568gRTlT5+vmK5WIsrFRE/9ugIfZSUNGmvLC4mPvvsc46WC+bzDm0MTTcT9c3gqLTm8vqK7eUFR0dHNxRnlGhdY+TO2Rld3VIpQ6X0AS+fcO6paNXkmHQ4gN6Qsg6zjjQNesqAqGDiaaIVpEwOMq0dQ6D3AyOZe48f88EPflQewlLQ6vW25/uuf0yR/zfctCogdnD/Lb8LmzheL+rbWxpwa+Wg5O9Azoa7Dx7z+a8+JbkdIUtEn04WlEGZCmUrkrH4mKmspq4rDu9M6akDIpDNMRFHz9XFhaAzKqO7BmOtWNRlmLwnhFogI+7p9VprMcU30Y0OnTNWi2lmQRyJYZSk5uCYn64xTY3CiL+5L2qXGOm6jvl8waaZiynQtqffO+6ajrruMNoSY6CtG5TWRPYobVjO5gyDZ72UYt70A/Mq8uWnv+QnP/kRDx4/pp6vABiHnnEY2G63XF1dkTO0bSMHwKK5rNuGk9NjmqamMoaqkLg0Yvp/o7+VbFIp+Ck+Pt8MelIqAbpTgydX1oro5XePIRK9OCyMztMPI/vRUS8XfPgHH6NntVg339o9ci5RkOnf05+8FOAc+C+A/+7Wh/9Hfkc2cdNqUH7Wa2R6+bysDJMkMOZcppcN9x894fO/+2uaykp/nhxJVyhd4fxI21qwFltaikw+qFRCyREK5Sbt9jtizjJ57BpsW99YJJTXKkZ0Mr2YDl/WWhmUpMT5+TmpmF1abYpRfnEDTbIbdPM5s8UKHxI5emIfGIaB66srxtGxWq+ZL5Z07ZzaVly/eIW1FfP5ipyg7/sysi+IFGBtRUiCt5M168WC9XJBpxxnqzkfvf0Wp4+eUM2XVJXFh8DXX33F6cmJpLTFRBqd/I5JTIfun9yn61qs1lTaSFJbIWtFCjyobrKQbqaZ6dfev8yN3UgoxS6C5DLRjJHBefrR0XvHGBOq6vj4B3/Ag0ePUFow/VveUUU6+jpl4Ddd/1CbuB1w+p2PveJ3ZRN3C2qajIVufT9utsCb1AdZWC0PH7zFV599gfMDFYlKRagqQV2cJ/gAsxZVTeSj6SALRPmaFKPoGGMgqMwQA6vFnKZuBF1Qkn8pLdOvM+xU2cLn8znOOfa7HZU2NJUQC7SpyKkUOZHVUUerW1zvGX3E9yNX19ei/1QihrZFlrdaLTAhUFmNDw5txKN8GAasVWQjD5PKgRQc1mbqDB+885jd9RVXL7/lx598zPFiRhwd7VLoEm3TcO/eXXb7LVjDp599Sq1rGfwkscS7f/8BVdVgtDzIphw8MRKMJQiY3Idp1T68QcUX5/Zu/NrDECIhUfSaXoK7fKD3I2N0uARvv/shn3z8R3SmK8O6KGc2VQaE+fWd/7ddb9DE89ev128ayGqubhWbZrE44q233uUXf/vXGK0IKmNUydHUiuQCJispGl0EAGX1y1EOh6mkPRhdsYsDZtYxXy3Kj5WDqbyUwqHhxkc950yFiAPW6zVN03D58hyqRmS8xqDI4pQVA13X0dYdcQwMbmTY98TBsb/a4X1gtuqoJIqYFBwpBo6OjkTQULg2Ds9yucK2rQRt6UDEEDfXEj+SM7Pa8PD0mN2rp8znM7zzKL3H9zuuhl4U/d5zfHaCqio++/orrvd7losF9azl4ZMHrJdLqsaiK7BGYbWWrB5jsKii1bwRKd8U+jSnpxy4S8EXTkpwnhjywWLOO0Gb+ujpg8cnzcmd+/zhH/+Mql6Qo5H0anPTEpUTHJM19Pddb0iR58NqeFspcht2ev1pnUb5EHLiyZO3eP7tUzaXryRvMmuJQLQlWc0YCZgqEYESqZfx44gbR6LzRB/wPnO933H35AFdO5O8zNJ36kLvVVqTQjjg67GsVFprmqbhwYOHnL88JydNSBmS5Nb3/R5jDYvVCqU1u+1WYMJ+kCLve3JOLKwmBZk+7vZ7/N6xPLtP1zboLJRgpSt0K7n0WcncQLc12hj67UhjWyqluXtywov1kt1ux2o+p6pqiD1GjXz79Zdkn1menjKbzzk6OuHi4or5HE7v3uHB4wfM1wuqpsJa0Ziokk9EGUrpwuXJudhLTELGGAkpHAyXYkp4L4UdUyImJWJxH4nR432QHjwIR2W5PuOnP/0Zy8UxORtyEkqFREKKnUZmgiHj73wY9P/T9ZvzL7+/15J4u5Sgblreee9d/t1fXBKCI2Z76KO1Kdk0unAcktiK6RDx40gs0STkzG6/ZwyOtpsDSlAWq0rSGGXgpFFYVEk+M2VsPeHHjx8/4qsvvub6eoMLnnGUFTylxLypUUbL4dSN7Acx8RvHkbFAcpvdyDAI9LjvBTWxVpOzhyQiaq+ycOWNKvbRkJOhqmu0qiQ7U0dqazg5OWa33eKPjsnjwH6XaWYNNgVevTonW027Oqbr2gMU+ujhA5ZH66JWMlRVWVZUAhUEQj3wuKfhj7SC8YCcCF0gHQ6HCR8nhmES8UM/4NyIGx3bvmdICdvM+MlPf8ajx++SqQ44wc0uelPQShUvnt/SCUzXG1LkHKi1k/n6tLL/1oFCGfGrYklx//59vvnmjOdffsEAdE2DzorZrJMDk1JS4DHJSuCD8MCz+Gkr4Or6iuXpkuVyVVCcLKZD+taQqrxWbeQUnApXxhhDVUmo7b1793j54hX7vifFRFXZwvuwDL0o9kOMBJIY34+jTHUz7HtPjINwZFLk9OiY2XxGVVeElOiMRVuFFdDxIDAJ3sv4XVfEEs2idGY+7xg3O1IJnALD9eVOHA9SZr/bQFNxdLRgtZ7z0Ucf8OjBA5qmoaobKm2orOx+ZLknmgRZ3yru19mIKaVDBHwsk9MYIylyMO0MIcrDPQxstzuuhxE7m/Ojn/wxD996j5AliUIOltNxX/jmQLESvKmT77veiCJXFF6y0qL0SBSiVrl5uSAat648MeS0QiM8ho8//ITzp9+KgBfNbNHRNLU8EAV8ijmWjHo51SslufDOe1wI3D8+ES+W8uMOcObUUk2TUm4+r4zB5ExdVaSUuHfvLp9//jn90GOriqqqMVb2e+cjxmp8yowhSEpyYfKJx4wnpURlDf/pn/wJD8/ukAcxR8qlvzfayqKawRiJU8+FyOWdwxcECa2o65pqoai7ltXJEd1yRdaaqmrRzUv6FNlur3n86AHL5Zz79+6xWM5pugZb19TaYJBJZE7ifxJ8IGl7OFimVE7l6SYbWYo6FWcBGfjEFAgxMo6Ovh/Z93v2fY9zjvl8yYd/+FPe+/AT8dNRSvhIhQwnh1xRKaXyWgSH0L+Z13vreiOKPAMpiouWKpRbmdQW66DMYWUAaUFivhV8mjRBaZqjY9778Y/5qz/7M2xKHNU1pioTVIRxJ+chfTi4Ri2TNRczqqppZovyfskwSbJSI9pAJqGSKvdWRAUlLxmdTYn/gJO7J7z/yftc/umGnAxZW0zVkLQmoXA+4WICZQQtyZmgMhQtQk3mg3fe4oeffEQTIlWS1I3LYct+e0mzWMk2nhRN0xEGh6lr6rajspU8XFYS3rowx840qm6o2xnrkzO2uz2nDx5z/OAxMSdevHhOVVUcPVpR1RXKGrSxVFbEzySwRgvdeBjwIch9zOkQhZJK25eycE8m+4hIYX+iCCHhXGDfD/TDyDAObMeeWbPg409+zIO33yOmjIkSbYiZPFxuHqYciw8iIqCZhkzfd70RRU7p4WRTlBXJKCU9IAivpRxiJuWKYKQFDlQQtSEqxYN332e72fL000+Fb6EmtYroOykTzwlvD0myiFLW1M1cVkTKzqFuIK/X2qbpIFxEHgrQlS1BUBJL/s5773JxueHnP/9URv19L+eDjJDDkMBaY2oMSqyejYLkUXHk3bcfk/1Iv9mhbC3Flh0+jFRR9I7eJ66vt1TKEHxCki1aUJGYZNfISh6ugKXvI+cvrxi9l4GP1syXc86Oj3HeH7JH0y3/E7m/FnSNthVNV2NCAD8wjuMBFrzBqyeTIeH7xwTOe3JM9IN4s+/2e/aDrODtYsnjx+9z9uAxWZlyPgooJXLEmxIpMHNMErpg9A3l9/dDNMGBTzs9uflWmzLRYV/78sxNZIpWaAwGoaP+4MMfYntH11mmkJQUixuUUugs+fOvFXpOxR3KlJVHGI8q3QTQltNXwelzKTz5YmuMvCYlg5IMfPTRR3z++Vf86ouvyUoLH6auqOvmkE6ntNg9xBgI3uFdz09+8BFHyyXRO06XS2I/0A+9UAL2PVk3NJsNSWXatiGgyD4wOieraMykJKlxez/SNDWtC7je0dYju+sLNn1P03V0bUnI8x6UQmdD9L48kBNXxwIKa2sg4H04HFJ1ef0oVQJ85f3RSFp21y0JYcNme82+l9e/7weZZrYNdx49YXZyJj14migACXKEZMpic0PSM1oLsmUVuSTOEX8v0BWA2/n1YkeAEmxVPntjTXyoN0p+pcDnMp1UmqZteee997h6JZSZlEUZhBJHqnTIPSjF773IzpIkIudCxo9lMU85o00hBCEfkwVZHYYnCilwjKFRNUop7t65w3/2T/8T/ter/41Xl5cEn3HjyGhFXDFFmQgakaiM4ez4hJ/98c9QSR6gGCYhryf4yG63ZzdGbDNDWSErWaXJLuCGkX6/5+rqihACwzgwKI+yK0bXM2w0lQr4fo/b77Aaxv1OeCLjgK4qce4F3OgOqIZVEWromRT2ERdkOlpVFd7viU4OvgklfHTncDGwWB5z7+iE/M1Tvv3rvyK4wOgC7WzF4miFbjokcIXDoE2V5L5c6BfTDqG1Fkamlq+J0xL++9CTAxJiquUpzlMmCpPbrVw5T081ZFUqm0llkoEkk7/kGYa+dBvSe6cs/BWrNQORkB0hecIYxOC9cDZy9mTvCRq0kdxCcRYvP0N6EpTRJFUEv3AY81tr0AmMlo89fHDGP/9n/zH/57/6V2y2PVC0pjljbEmO1gqrxR75w48/5PjkFBUdjS7ZokqEF+PYc319jUuatl3TNh1WJZJSuJ3j+mrHty9e8urylRywcwRrmM3nbK+v8OcX9PsF2SiMUsQQubq6wkUp2nrW0S7mkDXe36yo0USygsH7AghEcZdN8qAbpQkksm54+O6HzJdr/u2f/2vi8JIYPa8uelbHZ/Q+sNtcMJ8vmc3naFujgrBKJWY9FwfdLIddM1F55X5pbW40rmVRxOi/V/725hQ5iWmSCAFQ5GQQ+qACJT7dJUX+AOndsNEkZMoifORh6CElQpRcdmPqm12iTOl84VbLAUramRgCIQaURyRWxfDFFN5Fzvkw8ZPvk8pBuaBDSlNXNUp5aBLmaM4Pf/g+LvX86Z/+Ofu9gyxIizGSgoYCYw3Hx0c8eesh83nLslkxXL7E9Xv8KD4wry4veX5xzuigq1as50taIyvdbjPw9dNnfPnttwxuIGvxqrHWMvQjRivmjVhFN/MZLkNE4UKkrsRhbEJoBPoLh10zZSXuB5UopCQ6vZCxgvD72+Udnrz1LtV8joueR2+/wzsffsivPv+S4eqFSA11pupa6rYRq+zkiNGRoi8wripENlFOaTVNmmViKqKMdODBiHm/lvib77nemCIXv5UJD42QNSlpIWKVFXvaln7TwEhgLOkv+v0e71xRoUcZ4quELrzjSRuZCu1QVL8AAA+9SURBVJkoRdna0ZaUIPiE1hlPRJkbRy+xaci3fm5Be6ZttGypWmVqYzBNRV0ZlI788IcfEVPiL//dz3FDgKxLCwZ1bfn4Rz/gxz/+MbO6ITrHi8sL9hcv6awmuMDmesuuHxliYgiJL756ymK+YL1YkFEMLvHFs+ecX22pmopuscAFR1JChNLG8uDBQxbrJapryFnR1i1rVVowo9i7AVdw7QnOnIrcGHC+ly5SldSIWHZJpXjryRMGN/LXP/8b9vstwTmOz+6w6Bb861/83zjXE2JgvlqhlBXzoOCwKWK0YhrppNKmigNuLBwZ2c1DTLIoMLlxaaqq4e87eb4xRZ6z2KK9Rn3IRUaVPBJaW4o9K9myvjM8mliBw9DLsEBHjMmQk8CHKRJDYByF8uqDJ5VpZAgeXd14veSUSUqCYmMsD19OJWvoBuacfLi1ln5fa40pLgLGWEL2WGNZLpb85Md/wKxd82//zV+JqIOMNoq3337Cf/RH/yFaay5evqJKkMYe3/eo2hJ9Yr8bePbNC7w13Hn0BOstm/3I+cU1s3ZGNBW/evGSZ+evWKyXnM5advueRyfrck8cwxhQ2x06BZy2dMoSQqCyFXXXYE2DT56cxgMPbUI0ZAd0aG2xpiHGKXk5o4wiOM/f/OVf8eCtx9x7+ICvPv87/uxP/y/+8I/+hP/gZz/jX/6L/4Ou6Xj06G2WR8cCXb58zgcffsTpnUcopQkhUjc169WKfnBEH5jNavp9j9KacRhZrRa40dHUNfv9QESJ1O97rjeiyDMc9HpyFWhI8o1LyNNkNJQPLcptPSGIMIEY6PsdIXsxxkRhS//mkye4sZClCsc5ZXwIDM5jdYPPYBPoIEOaKWc5x3LINEX2pRSV1qisqZQ54PCi/VToSkbSIUQiIvI4bVd0s2Oqasbf/u3PiUlECe9/8D4RMfsPIdA2DcvZGt8q+s2W3o2c7ze8uL5GzRbcqTra+YKYM58/fYbCQNOibE3vA3VI9KPHpUwz7/A5MvZ7Xp2/Yulq9M4StMHP9ihT0y3WYPRhUJOIkBM6Q8yKpEGZhLUyx4iHRD6F904CYzcbUgy8eP6cbrWirluuNxtCOeZbY2m6jnaxkp3Sarr5iphgs7lmvT7i6uqSo6MjvA/UtmbT9/T7PUpZ5rOO2laMg6OuLUdHa1JM+ChK0e+73ogiv0FVbkwhrZzciqA1FVK+rKC3uedwG8cWK4Oh3+ODL4cU8URM0RHDSHSO4CVzJgaBw5yTvPjaNDgfsFWkUoqohJBFCEUzasS7JR3oLsh2rQmAMZJckbMV75IUwbbM6oaQxbCyquGTH3zM0fGaGCNHR0eM48jV5hpNZrVecjRfEMc9bki44Lje91zvB1xIGF8gvCozpsSnv/gFFy8vsXXLVb87oFDjMMjUsm2JzuGTYzdsSVR0izlDSDw/v2J1dAJ1TcwiGt72e2xd07QNUYlNm0HgUaMNmErG86EwD1NmHPZcXJyL21bfSzv1+af86Cd/hEbzb/7f/0d2t5CwSjj2i9mczWZDW1dEJwrcrpvRNB3D4EjJ03Ud+2FDU1uMtVxdb0RhlTJdN8P552hdyyT0e643osjhpnAP1gVElNaFqxBei6NWBav+tSuDG0bJjS82BtYYcnaQJPSKKC1LTGLmHkPAec9+GAi6Yj/I0CYmqDMkNJXRcgCdMGEywUsvmV9zDS5ogLoZ+tRNLdx2L/xvpSxVlXj46H6hqCZ2+w11XdPVDSeLFSZGQmVElhcCF5stL6+uISsx3UyyOo458/XVJd88/5a2nRXLOUlgyzmzXqyYzeYs12u+ubrgYrdB12uUd5i6QceEj4HN9Yaqacg54fseazQ5VmKNTRbrPSCbTMwi1csxEFKBFN3AF7/8ucynlWY/jlS24ovPn/KXV3+L9yNKZdR+ZPPqkvXJMd8+/YZnz77BakuiIkSo6gbvPYvFkvlsIenQ40hMhmFMKFVTVZoUA+fnV0JvMALxft/1RhT5xIG4XcjycTn02UputvThUx98SzvIDdHTe6GpEuUhGUMg+B6tLMGPIi4u+KsPgeiFKbjve7yybLZbiQ0JMgVtMJC0+LUk4ZdoJciFOD+pwxRVT9xmJQjPNOASu41K7CmCLw+KwmiF84HT01OauiH0I2F0bK+vsSaDMuyHgS+ePmU7jsyWSwKUsK3Ibuxl9W4tpqvFTzYJg1EpRVc3tLrC5EyImXPX0x0dc3Jyl8Vqzb26RRlL18zItsKFwLF3bHayM2SA4IgpoasKnzK1tcSYCSjxQ08ZF4Lg1sDnn37Kbruh6Wa89fb73H/8hOfPn/Hq2TN++Ac/5cvPPqNdLTg6PsZUlsVqRcJSVRbnJCXDOUeKG1mxmxmKTHQjs65jv7+mqht2+14WnRSFJfo91xtR5DARqG4U+jdFf9OWhCBjeV0U96+N1kt6XAxBsGXvi3ehwFDOOenFnZNWSCnhOHtHSJEQE1cvXjJfLlBKM+tqlKrQuUbXlNYlkUyWHvUWVxqVybqQy4DgxYbZaENMQXpYbiBIGXYVP8ESE+NHz+Wrc/LgqHNkPqtw3tF7z34cwRp0XdPWNaYSym6/29PvdtRVRdfVuGFEW0M/DqyXC2ZtSwPEYcTFSD1f8If/9J9xfHKXcRglQpyMip7eeXRd05klubWMPrKYzbh6+Zz50TGDC6jKELKmWcxoKkuKid3mmjGC0p5xGNDtnLcfPCTEyGbYM0sCPb777kcMIbDZ75lvt7x88YK7D+6jqwqSnLnW6xWXlxecnp5yeXVB8KJ31VqJM8PugtlsxrMXLzg5ORVYMkZms9+DgydQMNqJ9yBUyslmbEIwJortASI/nFgpaJ4c/kKU+A3i5JMiFs5yiBWjz0QWRl0x/8lKMwyei5dX1LYhr1aobFHJYIxFV5JiobNYNUx6xTilxDGhPeIf0jR1GS6JQEBs6MKNHEyBypEw9KBE0LHf79Eu0LUVfr9js73iarPFpQzG4nKmNhXZ1oScuLq8wiTFzDbUyjDGhOmkcOeLGbOuRmeZKpCRgDCleX614ejoiMvNhn4csdHLMK5rmJkZ+1Gs2eqqBV2DrvB+oKorhn4Aa7m+vKLRmZcvXxCUxRrNdrvn7O49mrYhxcRXv/oMnTJ3H73N6ERS2HYd867jyy++QFnLg7Zjtx9Zrk/wPjKbzbFWKMvr9RGXl5ecnBzx/PkFbWu5urqkaxoWs44vvnjO2Z07/H22tm9MkYOs1DLxzIfV/DXflfJ3ydcUTjOZQtEVY3tpWcT0MpJRhQZqtD4MkSauikSpSE+urWX00utpbclBWH5KVdjaoIxBKYuOgnFOaQjJJGIQHDkifiJ13RJ8KoQnDoOn25EhBMmivzw/B6UYU8ToTNNWDOOe/eaSy2HPdrtn8ojxMbGeL0BpYhLj/YlDIlt8RCtF1dTUTV0mtDILtsqQfeQv/sW/5Gh9zGa5lCh3I2kbs9kM03d8un+KT45uNufZN98w7zpePX9O1Ird5QV21nH+8iW6soxk+t2WfaEeXFxeYc7O2F5fUtc1RPEG/uXPf844jDRNQwyBX302YMr79OLFK+arY0af2A877s8WPP3mGadnZ1xvd+RsSMngXGSxWLDdnGO05qunT/GFm26r35OVHEoLm4UtOFk8HIwlbyMpSQ5/qmDqOavC1lIYK6p95zxWQW2ttDxZCERChPKS6V6QFecCRlusrRlHx9XVhujF/MZoS1NrNBbNNNU05RyRpYUCQhBWYGUb9NQKxXh4A26b0csuI8Y+Qz8QU6RZzTlZrqkT7F45QvBcX2/YXG/koTZi7DObzSSgqney8pedznuPLkMabQ1N25TmqZiTGo1zjotvvkZvrsjzGUMM5Lrh7qNHLKoFOYzYzjKMgdDvmTUN+JEqR7IPaCJ+e4VOEbcXud6w37LZ7XG9w2rLq6ffoJVmo0CbzKuXLwnJoNGM+z11VRN9KAhQz3y9xhjp81frE7SpOLtzD61Ev5tSBq05Pj0DlVku1wcVllIybf37rjemyOWFW1IKJJcOgx24mWoeLnVgwXIDs0g7U1f1IchKVxXGWlSGyhiyi7jCh/alVfHeF29DTde27LY7ttstGsWrVyKb4/9r73xe46qiOP75vvc6STGOTWoN9QfW0m6yE7po0YW4kiKuuimCm4IbFxUEMfgXuLG6cFHBpQsRBSWbgrHr+gNF0RJtd26srW00TpOZeXNc3PPSaawkoZ3cN4/7gQtzfyzOYc7cufe9c++3KGnb7iCGkYUgr9I8MwVluqz0F0VZSBHul9X1DtzK8mPokIGfKNozM8309DRrlBQDkfdL2u02Exn8vrxM52YHKaMocqbumyLPMta6XVZWVoKcjJ+o6vV65HkRksXycMVydYtXlmfkEy26/6xAaaxe+YPdky32PjTL7MOPMLNvlnb7/nCoe3IXgwFc+/NGWJZ5vlBWwhpAf8Bav0vnZodet09ndTXsBfIW4HI3VPeXG3lLqMyx3mA9qa1Kx83zzG8AyMjywjfu4Udrg+rMb7hhuCgyyrJHedtl5Jvk2FajNruzYieQ9DewFNuOEfEgcDW2ESOgbn49bmb77tRRl5l8ycyOxDZiFEj6pom+jZNfmy9oEokxJwV5ovHUJcjfj23ACGmqb2PjVy02nonEKKnLTJ5IjIwU5InGEz3IJT0naUlBEvGN2PZsB0mPSTov6WdJP0k67e33VP4xFpJySd9JWvD6E5IuuP0fKUjsIGnC65e8/0BMuzcSNcgVJBPfI0i1zAEnJc3FtGmb9IHXzGwOOAq84vZX8o+HgUWvw+3yjy8T5B/rzGng4lD9LeCMmR0CrgOnvP0UcN3bz/i4+lDlU8QowDHg3FB9HpiPadNd+vMZQZFjCdjvbfsJL7sAzgInh8avj6tbIWg9LQLPAguEd+hXgWLjdwecA47558LHKbYPVYm9XPk/OcSxw/+inwQusH35xzryDvA6t/JY9wI3zKw6azZs+7pf3r/MBmWSmMQO8kYgaQr4BHjVzP4a7rMwvY3Vc1pJzwNXzOzb2LbcC2LnrmxJDrHOSNpFCPAPzexTb74r+cca8BTwgqTjwCTQBt4F9kgqfLYetr3y6zcFrcMHgGs7b/adiT2Tfw0c9l17i6D4/Hlkm7aMQt7oB8BFM3t7qKuSf4T/yj++5E9ZjrJF+cedxszmzexRMztA+E6+NLMXgfPACR+20a/K3xM+vj7/XrE3BQQ5xF+Ay8Cbse3Zpu1PE5YiPwDfezlOWI8uAr8CXwAzPl6Ep0mXgR+BI7F92IKPzwAL/vkg8BVBvvJjYMLbJ71+yfsPxrZ7uKTX+onGE3u5kkiMnBTkicaTgjzReFKQJxpPCvJE40lBnmg8KcgTjedfHbZp1om2ZRQAAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3XiFNN94EAWH"
      },
      "source": [
        "Build Model\n",
        "\n",
        "\n",
        "Input Layer: It represent input image data. It will reshape image into single diminsion array. Example your image is 64x64 = 4096, it will convert to (4096,1) array.\n",
        "\n",
        "Conv Layer: This layer will extract features from image.\n",
        "\n",
        "Pooling Layer: This layerreduce the spatial volume of input image after convolution.\n",
        "\n",
        "Fully Connected Layer: It connect the network from a layer to another layer\n",
        "\n",
        "Output Layer: It is the predicted values layer."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XEFX8V1lDf6d",
        "outputId": "4e387607-8783-44f6-f6fa-42bcea7253f7",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "from keras.models import Sequential\n",
        "from keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense, Activation, BatchNormalization\n",
        "\n",
        "model = Sequential()\n",
        "\n",
        "model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_CHANNELS)))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling2D(pool_size=(2, 2)))\n",
        "model.add(Dropout(0.25))\n",
        "\n",
        "model.add(Flatten())\n",
        "model.add(Dense(512, activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(Dropout(0.5))\n",
        "model.add(Dense(2, activation='softmax')) # 2 because we have cat and dog classes\n",
        "\n",
        "model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])\n",
        "\n",
        "model.summary()"
      ],
      "execution_count": 89,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model: \"sequential_1\"\n",
            "_________________________________________________________________\n",
            "Layer (type)                 Output Shape              Param #   \n",
            "=================================================================\n",
            "conv2d_1 (Conv2D)            (None, 126, 126, 32)      896       \n",
            "_________________________________________________________________\n",
            "batch_normalization_2 (Batch (None, 126, 126, 32)      128       \n",
            "_________________________________________________________________\n",
            "max_pooling2d_1 (MaxPooling2 (None, 63, 63, 32)        0         \n",
            "_________________________________________________________________\n",
            "dropout_2 (Dropout)          (None, 63, 63, 32)        0         \n",
            "_________________________________________________________________\n",
            "flatten_1 (Flatten)          (None, 127008)            0         \n",
            "_________________________________________________________________\n",
            "dense_2 (Dense)              (None, 512)               65028608  \n",
            "_________________________________________________________________\n",
            "batch_normalization_3 (Batch (None, 512)               2048      \n",
            "_________________________________________________________________\n",
            "dropout_3 (Dropout)          (None, 512)               0         \n",
            "_________________________________________________________________\n",
            "dense_3 (Dense)              (None, 2)                 1026      \n",
            "=================================================================\n",
            "Total params: 65,032,706\n",
            "Trainable params: 65,031,618\n",
            "Non-trainable params: 1,088\n",
            "_________________________________________________________________\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GTsRkNZlEp9S"
      },
      "source": [
        "Callbacks"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "v9olGx-1Elzn"
      },
      "source": [
        "from keras.callbacks import EarlyStopping, ReduceLROnPlateau"
      ],
      "execution_count": 90,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vlLvxlhiEwcY"
      },
      "source": [
        "Early Stop\n",
        "\n",
        "To prevent over fitting we will stop the learning after 10 epochs and val_loss value not decreased"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1myMXGP7Et10"
      },
      "source": [
        "earlystop = EarlyStopping(patience=10)"
      ],
      "execution_count": 91,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HAFClnwJE3VD"
      },
      "source": [
        "Learning Rate Reduction\n",
        "\n",
        "We will reduce the learning rate when then accuracy not increase for 2 steps"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9iT9fy0TE1Yb"
      },
      "source": [
        "learning_rate_reduction = ReduceLROnPlateau(monitor='val_accuracy', \n",
        "                                            patience=2, \n",
        "                                            verbose=1, \n",
        "                                            factor=0.5, \n",
        "                                            min_lr=0.00001)"
      ],
      "execution_count": 92,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "30fgqmTjE6aT"
      },
      "source": [
        "callbacks = [earlystop, learning_rate_reduction]"
      ],
      "execution_count": 93,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Ilc_GkWHFHXY"
      },
      "source": [
        "Prepare data\n",
        "\n",
        "Because we will use image genaretor with class_mode=\"categorical\". We need to convert column category into string. Then imagenerator will convert it one-hot encoding which is good for our classification.\n",
        "\n",
        "So we will convert 1 to rumor and 0 to nonrumor"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x4vPWpOwE9ss"
      },
      "source": [
        "df[\"category\"] = df[\"category\"].replace({0: 'nonrumor', 1: 'rumor'}) "
      ],
      "execution_count": 94,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IYBab-iIIkHP",
        "outputId": "d312c98c-a495-4136-b532-b4c38292c87d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 95,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>nonrumor_images/63207a53jw1ezu5w9vmm1j20c809a3...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>nonrumor_images/620beb06gw1eznhqaixltj20c80c8a...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>nonrumor_images/0065vuzcjw1exnnp4raypj30c80c8j...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>nonrumor_images/470bf257gw1ev900k7h0jj20gj0gkq...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>rumor_images/93dad53fjw1es81zh6g87j20f00qojsk.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                            filename  category\n",
              "0  nonrumor_images/63207a53jw1ezu5w9vmm1j20c809a3...  nonrumor\n",
              "1  nonrumor_images/620beb06gw1eznhqaixltj20c80c8a...  nonrumor\n",
              "2  nonrumor_images/0065vuzcjw1exnnp4raypj30c80c8j...  nonrumor\n",
              "3  nonrumor_images/470bf257gw1ev900k7h0jj20gj0gkq...  nonrumor\n",
              "4  rumor_images/93dad53fjw1es81zh6g87j20f00qojsk.jpg     rumor"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 95
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9vGd-5OuJxGK"
      },
      "source": [
        "Divide into 80% train and 20% test, Note that we have shuffled earlier"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "PHvSkqYpIlEC",
        "outputId": "fcb3592c-2fbf-41d2-b919-d922e1793303",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "mid = int(len(df)*0.8)\n",
        "df_train = df[:mid]\n",
        "df_test = df[mid:]\n",
        "print(len(df_train))\n",
        "print(len(df_test))"
      ],
      "execution_count": 96,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "10617\n",
            "2655\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JdHhrULaJytp"
      },
      "source": [
        "train_df, validate_df = train_test_split(df_train, test_size=0.20, random_state=42)\n",
        "train_df = train_df.reset_index(drop=True)\n",
        "validate_df = validate_df.reset_index(drop=True)"
      ],
      "execution_count": 97,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "89DDqmY2lXn1"
      },
      "source": [
        ""
      ],
      "execution_count": 97,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U_vv7UUvJ06a",
        "outputId": "ab33d3ec-3cea-4488-d74b-a1a432fa7e39",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 321
        }
      },
      "source": [
        "train_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 98,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fbf905a2518>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 98
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ehgi-u8KJ4oi",
        "outputId": "28cbf940-afa4-4f10-dd20-7387884561a8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 321
        }
      },
      "source": [
        "validate_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 99,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fbf904d4470>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 99
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QSP4mXwoJ8Ph"
      },
      "source": [
        "total_train = train_df.shape[0]\n",
        "total_validate = validate_df.shape[0]\n",
        "batch_size=32"
      ],
      "execution_count": 100,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UYUi4feTKBcc"
      },
      "source": [
        "Traning Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "d_ojPtyjJ-qR",
        "outputId": "d60e53d3-d1b4-446c-dc63-461e68331664",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "train_datagen = ImageDataGenerator(\n",
        "    rotation_range=15,\n",
        "    rescale=1./255,\n",
        "    shear_range=0.1,\n",
        "    zoom_range=0.2,\n",
        "    horizontal_flip=True,\n",
        "    width_shift_range=0.1,\n",
        "    height_shift_range=0.1\n",
        ")\n",
        "\n",
        "train_generator = train_datagen.flow_from_dataframe(\n",
        "    train_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical',\n",
        "    batch_size=batch_size\n",
        ")"
      ],
      "execution_count": 101,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 8477 validated image filenames belonging to 2 classes.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/dataframe_iterator.py:282: UserWarning: Found 16 invalid image filename(s) in x_col=\"filename\". These filename(s) will be ignored.\n",
            "  .format(n_invalid, x_col)\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "llVLhuxYKh2N"
      },
      "source": [
        "Validation Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ijwdyzmvKc4Y",
        "outputId": "5379221a-3e5a-43ce-ab46-666d1e1a6e53",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "validation_datagen = ImageDataGenerator(rescale=1./255)\n",
        "validation_generator = validation_datagen.flow_from_dataframe(\n",
        "    validate_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical',\n",
        "    batch_size=batch_size\n",
        ")"
      ],
      "execution_count": 102,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 2121 validated image filenames belonging to 2 classes.\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/keras_preprocessing/image/dataframe_iterator.py:282: UserWarning: Found 3 invalid image filename(s) in x_col=\"filename\". These filename(s) will be ignored.\n",
            "  .format(n_invalid, x_col)\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mVVVotrcK2P7"
      },
      "source": [
        "See how our generator work"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VtfGbdKXKs_B",
        "outputId": "ae0f4995-a014-4946-81ac-6f3e56672a5a",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "example_df = train_df.sample(n=1).reset_index(drop=True)\n",
        "example_generator = train_datagen.flow_from_dataframe(\n",
        "    example_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col='category',\n",
        "    target_size=IMAGE_SIZE,\n",
        "    class_mode='categorical'\n",
        ")"
      ],
      "execution_count": 103,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 1 validated image filenames belonging to 1 classes.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IgVpi6rfLOVh"
      },
      "source": [
        "Seems great"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "G4bJtNoKLQNf"
      },
      "source": [
        "Fit Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iJW0H0FJOFoG"
      },
      "source": [
        "FAST_RUN = False"
      ],
      "execution_count": 104,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "iYK7nnTtLE6y",
        "outputId": "55e1f0de-b1b0-421d-81cc-0760f9e8d731",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "epochs=3 if FAST_RUN else 20\n",
        "history = model.fit_generator(\n",
        "    train_generator, \n",
        "    epochs=epochs,\n",
        "    validation_data=validation_generator,\n",
        "    validation_steps=total_validate//batch_size,\n",
        "    steps_per_epoch=total_train//batch_size,\n",
        "    callbacks=callbacks\n",
        ")"
      ],
      "execution_count": 41,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "WARNING:tensorflow:From <ipython-input-41-28f6c98b1462>:8: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use Model.fit, which supports generators.\n",
            "Epoch 1/20\n",
            "566/566 [==============================] - 110s 194ms/step - loss: 0.9429 - accuracy: 0.5629 - val_loss: 0.6493 - val_accuracy: 0.6212\n",
            "Epoch 2/20\n",
            "566/566 [==============================] - 109s 192ms/step - loss: 0.7096 - accuracy: 0.5798 - val_loss: 0.6655 - val_accuracy: 0.6132\n",
            "Epoch 3/20\n",
            "566/566 [==============================] - ETA: 0s - loss: 0.6844 - accuracy: 0.5897\n",
            "Epoch 00003: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
            "566/566 [==============================] - 108s 191ms/step - loss: 0.6844 - accuracy: 0.5897 - val_loss: 0.6477 - val_accuracy: 0.6065\n",
            "Epoch 4/20\n",
            "566/566 [==============================] - 107s 190ms/step - loss: 0.6593 - accuracy: 0.6039 - val_loss: 0.6372 - val_accuracy: 0.6222\n",
            "Epoch 5/20\n",
            "566/566 [==============================] - 106s 188ms/step - loss: 0.6515 - accuracy: 0.6061 - val_loss: 0.6298 - val_accuracy: 0.6435\n",
            "Epoch 6/20\n",
            "566/566 [==============================] - 106s 187ms/step - loss: 0.6515 - accuracy: 0.6106 - val_loss: 0.6626 - val_accuracy: 0.6312\n",
            "Epoch 7/20\n",
            "566/566 [==============================] - 106s 187ms/step - loss: 0.6419 - accuracy: 0.6193 - val_loss: 0.6236 - val_accuracy: 0.6544\n",
            "Epoch 8/20\n",
            "566/566 [==============================] - 106s 187ms/step - loss: 0.6410 - accuracy: 0.6246 - val_loss: 0.6313 - val_accuracy: 0.6596\n",
            "Epoch 9/20\n",
            "566/566 [==============================] - 108s 191ms/step - loss: 0.6414 - accuracy: 0.6280 - val_loss: 0.6339 - val_accuracy: 0.6643\n",
            "Epoch 10/20\n",
            "566/566 [==============================] - 107s 189ms/step - loss: 0.6434 - accuracy: 0.6208 - val_loss: 0.6057 - val_accuracy: 0.6766\n",
            "Epoch 11/20\n",
            "566/566 [==============================] - 108s 190ms/step - loss: 0.6361 - accuracy: 0.6280 - val_loss: 0.6566 - val_accuracy: 0.6364\n",
            "Epoch 12/20\n",
            "566/566 [==============================] - 108s 191ms/step - loss: 0.6345 - accuracy: 0.6332 - val_loss: 0.5952 - val_accuracy: 0.6799\n",
            "Epoch 13/20\n",
            "566/566 [==============================] - 107s 190ms/step - loss: 0.6367 - accuracy: 0.6284 - val_loss: 0.6208 - val_accuracy: 0.6671\n",
            "Epoch 14/20\n",
            "566/566 [==============================] - ETA: 0s - loss: 0.6346 - accuracy: 0.6264\n",
            "Epoch 00014: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n",
            "566/566 [==============================] - 107s 189ms/step - loss: 0.6346 - accuracy: 0.6264 - val_loss: 0.6167 - val_accuracy: 0.6629\n",
            "Epoch 15/20\n",
            "566/566 [==============================] - 109s 192ms/step - loss: 0.6237 - accuracy: 0.6358 - val_loss: 0.6093 - val_accuracy: 0.6894\n",
            "Epoch 16/20\n",
            "566/566 [==============================] - 111s 196ms/step - loss: 0.6175 - accuracy: 0.6431 - val_loss: 0.6200 - val_accuracy: 0.6771\n",
            "Epoch 17/20\n",
            "566/566 [==============================] - ETA: 0s - loss: 0.6193 - accuracy: 0.6429\n",
            "Epoch 00017: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n",
            "566/566 [==============================] - 112s 197ms/step - loss: 0.6193 - accuracy: 0.6429 - val_loss: 0.6048 - val_accuracy: 0.6842\n",
            "Epoch 18/20\n",
            "566/566 [==============================] - 113s 199ms/step - loss: 0.6162 - accuracy: 0.6472 - val_loss: 0.6055 - val_accuracy: 0.6889\n",
            "Epoch 19/20\n",
            "566/566 [==============================] - ETA: 0s - loss: 0.6067 - accuracy: 0.6615\n",
            "Epoch 00019: ReduceLROnPlateau reducing learning rate to 6.25000029685907e-05.\n",
            "566/566 [==============================] - 112s 197ms/step - loss: 0.6067 - accuracy: 0.6615 - val_loss: 0.6265 - val_accuracy: 0.6884\n",
            "Epoch 20/20\n",
            "566/566 [==============================] - 111s 196ms/step - loss: 0.6069 - accuracy: 0.6562 - val_loss: 0.6073 - val_accuracy: 0.6922\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hqmvDWKSO2-w"
      },
      "source": [
        "Save Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3HUVXwMKO3gJ"
      },
      "source": [
        "model.save_weights(\"model.h5\")"
      ],
      "execution_count": 42,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "t9gbIiI3VHfZ"
      },
      "source": [
        "model.save_weights(\"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5\")"
      ],
      "execution_count": 106,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eQw6YuLRq3tT"
      },
      "source": [
        "# saving the dataframe \n",
        "df.to_csv('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv') "
      ],
      "execution_count": 107,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RJ70WX4tq8s1"
      },
      "source": [
        "# saving the dataframe \n",
        "df_train.to_csv('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv')\n",
        "# saving the dataframe \n",
        "df_test.to_csv('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv') "
      ],
      "execution_count": 108,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "K3if-P8VVMLZ",
        "outputId": "2c2ff0ec-c53b-4345-afed-f44ad04ff386",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "from google.colab import files\n",
        "files.download('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5') "
      ],
      "execution_count": 109,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_b3d3e1f5-ed7b-4a52-a8c6-4fc88aa4c2d2\", \"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020Rumor_Nonrumor_50epochs_model.h5\", 260156856)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fabeuti9rJgv",
        "outputId": "1ef2a846-3121-4741-d8fa-c8b522421d8f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "files.download('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv') \n",
        "files.download('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv') \n",
        "files.download('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv') "
      ],
      "execution_count": 110,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_841ca313-e3e7-4627-ab9a-f6396ac5fc1b\", \"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_5331.csv\", 830161)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_f3c7e268-bce6-409e-8f96-3674e8cd66b8\", \"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_train_5331.csv\", 662075)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_17450a16-e554-4c41-b8a9-614b96bbb002\", \"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020df_test_5331.csv\", 168105)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jtoywaWXkraL",
        "outputId": "c794fc41-69ad-4119-b392-919c4fdd3626",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "model.load_weights(\"model.h5\")\n",
        "print(\"Loaded model from disk\")"
      ],
      "execution_count": 48,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Loaded model from disk\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oxt6QQ-hO8PG"
      },
      "source": [
        "Visualize Training"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4NJQxiabO5h8",
        "outputId": "7761424c-5f59-40ff-fa3a-0c41803f5c92",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 873
        }
      },
      "source": [
        "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))\n",
        "ax1.plot(history.history['loss'], color='b', label=\"Training loss\")\n",
        "ax1.plot(history.history['val_loss'], color='r', label=\"validation loss\")\n",
        "ax1.set_xticks(np.arange(1, epochs, 1))\n",
        "ax1.set_yticks(np.arange(0, 1, 0.1))\n",
        "\n",
        "ax2.plot(history.history['accuracy'], color='b', label=\"Training accuracy\")\n",
        "ax2.plot(history.history['val_accuracy'], color='r',label=\"Validation accuracy\")\n",
        "ax2.set_xticks(np.arange(1, epochs, 1))\n",
        "\n",
        "legend = plt.legend(loc='best', shadow=True)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "execution_count": 49,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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U6cOlCkDzz5rnf7efhs2bjzRHVDJ1flFRFiyEh3tdSRp8/PPsGuXygNFJMO99polV127wqefWm+kJ56whpu33QZjx9rLqqTeebsIOo4TBqwCmgCbgflApOu6y066T3nge6CR67q7Hccp4rru38c+NwPo67ruZMdx8gLJruseOtvx1EVQRDKFHTvghx+sBHD2bKvPqF7duv+1bw9ly3odYXByXZtzVLy4DZwNFo88Al98YStvmaXzo4h4rn9/eOYZuOMO29IbFma3//mnffz117Bzp13fu+suS8IqVvQ25kByIXOwagNrXNdd57ruESAKaH3afboDH7uuuxvgpOSqMpDVdd3Jx24/cK7kSkQkpP37LwweDDfeaJcGH37YbnvlFVixwkoCn3tOydWFcBzrDDdzJmzd6nU0qZOcDDEx1glSyZWIZJD337fkqkMH+PLLE8kVwFVXWS+lLVvs5emaa070VqpXz64H7d/vXeyBLjUJ1mXAppM+3nzstpNVACo4jjPHcZx5juM0O+n2PY7jRDuOs8hxnP7HVsRO4TjOvY7jxDmOE7dz5870PA8RkcC0dy8MHWozqYoVg3vvhb/+ghdegD/+OLU7oPhGhw62kjVypNeRpM78+XYWo/JAEckgAwdCjx4203zYMMh6lq4M2bLBrbfaFtHNm20ayK5dcM899ieta1ercA6wsbqe81Wb9qxAeaABEAkMdhzn4mO3Xw88BVwDlAW6nP7FrusOcl033HXd8MLaTSciwS4pCSZOtJWUokWhSxdYtsyK2hcssIGmffrYTmLxvSuvtHLL4cO9jiR1YmLs7OaWW7yOREQygS++gAcftJ46UVGWRKVGsWLw9NP252zuXOjUyea6168PFSpAv36WhEnqEqwtQMmTPi5x7LaTbQbGuK6b6LruemzPVvljty8+Vl54FIgFal542CIiAWjFCnj+eetz26yZJVn33GN/idavhzfftBlW6n/rf5GR8Ouv9v8eyFJ6IzdqZMNvRUT8aNgw6N4dmja1Rf70NC11HLj2Whg0CLZtsyKNyy6DF1+0SRk332yPnZDg+/iDRWoSrPlAecdxyjiOkx2IAMacdp9YbPUKx3EKYaWB64597cWO46QsSzUCliEiEir27IHPPrO/NpUq2Y7hGjXsr8u2bfDRR/Y5JVUZq317eztihLdxnM+yZTbvrE0bryMR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\n",
            "text/plain": [
              "<Figure size 864x864 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "C6oe8cu2PIPc"
      },
      "source": [
        "Prepare Testing Data"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qLANKo8ebfnZ",
        "outputId": "aec8feee-2034-4b5b-c311-49f8a92e47f8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 203
        }
      },
      "source": [
        "df_test.head()\n"
      ],
      "execution_count": 50,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>filename</th>\n",
              "      <th>category</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>10617</th>\n",
              "      <td>rumor_images/9df2de2djw1ev0s31vivtj20hs0nq0ta.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10618</th>\n",
              "      <td>rumor_images/72c924eajw1e1be1fr2zmj.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10619</th>\n",
              "      <td>rumor_images/005xOb42jw1et82utuplgj318g0xcap7.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10620</th>\n",
              "      <td>nonrumor_images/707e96d5gw1eznen104swj20ev0ns0...</td>\n",
              "      <td>nonrumor</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10621</th>\n",
              "      <td>rumor_images/612364a3jw1e3w2vtklgzj20og0fwtau.jpg</td>\n",
              "      <td>rumor</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                filename  category\n",
              "10617  rumor_images/9df2de2djw1ev0s31vivtj20hs0nq0ta.jpg     rumor\n",
              "10618            rumor_images/72c924eajw1e1be1fr2zmj.jpg     rumor\n",
              "10619  rumor_images/005xOb42jw1et82utuplgj318g0xcap7.jpg     rumor\n",
              "10620  nonrumor_images/707e96d5gw1eznen104swj20ev0ns0...  nonrumor\n",
              "10621  rumor_images/612364a3jw1e3w2vtklgzj20og0fwtau.jpg     rumor"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 50
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9UBNf5qQbtip"
      },
      "source": [
        "df_test = df_test.reset_index(drop = True)"
      ],
      "execution_count": 51,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qgwp88LEPEJI",
        "outputId": "a8459f18-1037-4bab-f004-bda378c7402b",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "test_filenames = []\n",
        "test_categories = []\n",
        "for i in range(0,len(df_test)):\n",
        "  test_filenames.append(df_test['filename'][i])\n",
        "  test_categories.append(df_test['category'][i])\n",
        "print(len(test_filenames))"
      ],
      "execution_count": 52,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "2655\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oroYR9nFPKaX"
      },
      "source": [
        "test_df = df_test\n",
        "nb_samples = test_df.shape[0]"
      ],
      "execution_count": 53,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ke2CJfEzeQxk"
      },
      "source": [
        "Create Testing Generator"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Au0hQBuDPMi3",
        "outputId": "376dde96-5624-4a15-aa26-24164f0fbf35",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "test_gen = ImageDataGenerator(rescale=1./255)\n",
        "test_generator = test_gen.flow_from_dataframe(\n",
        "    test_df, \n",
        "    \"./train_extracted/MM17-WeiboRumorSet/\", \n",
        "    x_col='filename',\n",
        "    y_col=None,\n",
        "    class_mode=None,\n",
        "    target_size=IMAGE_SIZE,\n",
        "    batch_size=batch_size,\n",
        "    shuffle=False,\n",
        "    validate_filenames=False\n",
        ")"
      ],
      "execution_count": 54,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Found 2655 non-validated image filenames.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4QrM6f9seki3"
      },
      "source": [
        "Predict"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xaL3pLJ2eT-x"
      },
      "source": [
        "predict = model.predict(test_generator, steps=np.ceil(nb_samples/batch_size))"
      ],
      "execution_count": 55,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "amQMkq5kemlx",
        "outputId": "0885d6a4-56b2-4d1b-ad11-6eaa7b41c659",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "print(predict)"
      ],
      "execution_count": 56,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[0.04492794 0.95507205]\n",
            " [0.49207997 0.50792   ]\n",
            " [0.60963845 0.39036158]\n",
            " ...\n",
            " [0.5947728  0.4052272 ]\n",
            " [0.07197713 0.9280228 ]\n",
            " [0.2506096  0.7493904 ]]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cCw8FByKeqYS"
      },
      "source": [
        "For categoral classication the prediction will come with probability of each category. So we will pick the category that have the highest probability with numpy average max"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kfp83CZ6eoFA"
      },
      "source": [
        "test_df['category_predicted'] = np.argmax(predict, axis=-1)"
      ],
      "execution_count": 57,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UBRiP8lvevMY"
      },
      "source": [
        "We will convert the predict category back into our generator classes by using train_generator.class_indices. It is the classes that image generator map while converting data into computer vision"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JZ-sNkxResjR"
      },
      "source": [
        "label_map = dict((v,k) for k,v in train_generator.class_indices.items())\n",
        "test_df['category_predicted'] = test_df['category_predicted'].replace(label_map)"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "A3bZxpsKggzh"
      },
      "source": [
        "From our prepare data part. We map data with {1: 'dog', 0: 'cat'}. Now we will map the result back to dog is 1 and cat is 0"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "V0zaVoW2exJx"
      },
      "source": [
        "test_df['category_predicted'] = test_df['category_predicted'].replace({ 'rumor': 1, 'nonrumor': 0 })\n",
        "test_df['category'] = test_df['category'].replace({ 'rumor': 1, 'nonrumor': 0 })"
      ],
      "execution_count": 59,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CpR5BXrngknH"
      },
      "source": [
        "Virtaulize Result"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n3NO-gkEgiwd",
        "outputId": "7bae1370-8e5e-4aa4-e037-ab05f7409009",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "test_df['category_predicted'].value_counts().plot.bar()"
      ],
      "execution_count": 60,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fbf2a5ecac8>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 60
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JIFDmAJpj36U",
        "outputId": "fa6a0439-84d6-4859-84b4-660da85d74bb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        }
      },
      "source": [
        "test_df['category'].value_counts().plot.bar()"
      ],
      "execution_count": 61,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.axes._subplots.AxesSubplot at 0x7fbf2a4f5470>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 61
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "F8Vgbm5Oj6re"
      },
      "source": [
        "y_pred = test_df['category_predicted']\n",
        "y_true = test_df['category']"
      ],
      "execution_count": 62,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Fl5UHyHCbf_M",
        "outputId": "4af1b629-7d8f-4656-9842-4a973fed5190",
        "colab": {
          "base_uri": "https://localhost:8080/"
        }
      },
      "source": [
        "from sklearn.metrics import accuracy_score # normal accuracy\n",
        "from sklearn.metrics import balanced_accuracy_score # used in case of imbalanced data sets, average of recall, from 0 to 1\n",
        "from sklearn.metrics import confusion_matrix # division of performance on the multilabels\n",
        "from sklearn.metrics import cohen_kappa_score # compares model against random prediction, from -1 to 1\n",
        "from sklearn.metrics import classification_report # for multilabel classification, gives precision, recall, f score, support, more\n",
        "target_names = ['class 0', 'class 1']\n",
        "\n",
        "def print_metrics(y_true, y_pred):\n",
        "    print(\"Accuracy:\", accuracy_score(y_true, y_pred))\n",
        "    print(\"Balanced Accuracy:\" , balanced_accuracy_score(y_true, y_pred))\n",
        "    print(\"Confusion Matrix:\\n\", confusion_matrix(y_true, y_pred))\n",
        "    print(\"Cohen Kappa Score:\", cohen_kappa_score(y_true, y_pred))\n",
        "    print(\"Classification Report:\\n\", classification_report(y_true, y_pred, target_names=target_names))\n",
        "    \n",
        "print('CNN Only')\n",
        "print_metrics(y_true, y_pred)"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "CNN Only\n",
            "Accuracy: 0.6836158192090396\n",
            "Balanced Accuracy: 0.6639458679697358\n",
            "Confusion Matrix:\n",
            " [[ 601  463]\n",
            " [ 377 1214]]\n",
            "Cohen Kappa Score: 0.3323406158560571\n",
            "Classification Report:\n",
            "               precision    recall  f1-score   support\n",
            "\n",
            "     class 0       0.61      0.56      0.59      1064\n",
            "     class 1       0.72      0.76      0.74      1591\n",
            "\n",
            "    accuracy                           0.68      2655\n",
            "   macro avg       0.67      0.66      0.67      2655\n",
            "weighted avg       0.68      0.68      0.68      2655\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NninvD-ebAX3",
        "outputId": "e05ae541-674e-4513-9df6-827567cfcbde",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "# saving the dataframe of our results\n",
        "test_df.to_csv('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv') \n",
        "files.download('1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv')"
      ],
      "execution_count": 111,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "\n",
              "    async function download(id, filename, size) {\n",
              "      if (!google.colab.kernel.accessAllowed) {\n",
              "        return;\n",
              "      }\n",
              "      const div = document.createElement('div');\n",
              "      const label = document.createElement('label');\n",
              "      label.textContent = `Downloading \"${filename}\": `;\n",
              "      div.appendChild(label);\n",
              "      const progress = document.createElement('progress');\n",
              "      progress.max = size;\n",
              "      div.appendChild(progress);\n",
              "      document.body.appendChild(div);\n",
              "\n",
              "      const buffers = [];\n",
              "      let downloaded = 0;\n",
              "\n",
              "      const channel = await google.colab.kernel.comms.open(id);\n",
              "      // Send a message to notify the kernel that we're ready.\n",
              "      channel.send({})\n",
              "\n",
              "      for await (const message of channel.messages) {\n",
              "        // Send a message to notify the kernel that we're ready.\n",
              "        channel.send({})\n",
              "        if (message.buffers) {\n",
              "          for (const buffer of message.buffers) {\n",
              "            buffers.push(buffer);\n",
              "            downloaded += buffer.byteLength;\n",
              "            progress.value = downloaded;\n",
              "          }\n",
              "        }\n",
              "      }\n",
              "      const blob = new Blob(buffers, {type: 'application/binary'});\n",
              "      const a = document.createElement('a');\n",
              "      a.href = window.URL.createObjectURL(blob);\n",
              "      a.download = filename;\n",
              "      div.appendChild(a);\n",
              "      a.click();\n",
              "      div.remove();\n",
              "    }\n",
              "  "
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "application/javascript": [
              "download(\"download_06deb655-9130-4309-b62a-c20962269a61\", \"1_Conv_layers_1_COMP5331_Initial_Full_Classifier_Ayush_10102020test_df_5331.csv\", 155945)"
            ],
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EuGiE__EpTAU"
      },
      "source": [
        ""
      ],
      "execution_count": 64,
      "outputs": []
    }
  ]
}